Re[3]: constexpr
От: rg45 СССР  
Дата: 15.01.23 12:34
Оценка:
Здравствуйте, LuciferSaratov, Вы писали:

R>>А вот тебе про #define: 16. Избегайте макросов


LS>объясните мне, пожалуйста, почему следует избегать макросов?

LS>доводы из статьи по ссылке я встречал много раз.
LS>меня они не убеждают и входят в противоречие с моим личным опытом.
LS>я не претендую на звание эксперта по С++, но в своей работе я много работаю с кодом на этом языке.
LS>специфика такая, что мне приходится работать со старым (10+ лет) и очень старым (20+ лет) кодом разного качества.

"Избегайте" не означает же "полностью исключите". "Избегайте" означает, не употребляйте там, где без этого легко можно обойтись. Почему так — в статье написано достаточно хорошо, по-моему. Макросы не подчиняются правилам областей видимости, на функциональные макросы не распространяется ADL, для макросов нельзя использовать перегрузку и концепты и пр. Если статья не убеждает, то у меня тоже вряд ли получится.

Есть такие случаи, когда без макросов просто никак, например, описание разного рода типов со статической структурой. Использование макросов может придать таким описаниям очень приятный декларативный вид, легко изменяемый и расширяемый и избавить от написания громадного количества сопровождающего кода, такого как загрузка-выгрузка, сериализация-десериализация, операции разные — сравнения, сложения, вычитания, вывода-вывода и пр. Но это же не значит, что нужно начать повсеместно использовать макросы вместо констант и функций.
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 15.01.2023 14:23 rg45 . Предыдущая версия . Еще …
Отредактировано 15.01.2023 13:09 rg45 . Предыдущая версия .
Отредактировано 15.01.2023 13:00 rg45 . Предыдущая версия .
Отредактировано 15.01.2023 12:58 rg45 . Предыдущая версия .
Отредактировано 15.01.2023 12:53 rg45 . Предыдущая версия .
Отредактировано 15.01.2023 12:40 rg45 . Предыдущая версия .
Отредактировано 15.01.2023 12:39 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.