Создан ли макрос для определения констант?
Возможный дубликат:
"static const" против "#define" в c
Макрос - это фрагмент кода, которому дано имя. Когда имя используется, оно заменяется содержимым макроса. (Нет памяти требуется)
Таким образом, люди используют его как метод для определения констант вместо синтаксиса: const int num = 1;
Это хорошая привычка? Установлен ли MACRO для выполнения других действий в дополнение к #include
а также #define
?
2 ответа
Макросы могут использоваться по другим причинам, а не только для определения констант. В настоящее время использование макроса обычно не одобряется, если нет абсолютно никаких других доступных вариантов.
Отладка сложного кода с множеством макросов может вызвать у вас больше одной головной боли.
Из документов GCC:
Макрос - это фрагмент кода, которому дано имя. Когда имя используется, оно заменяется содержимым макроса.
Констры обычно предпочтительнее по нескольким причинам. Например, они являются структурой lenguage (не внешним значением, обработанным препроцессором). Кроме того, они содержат информацию о типе, поэтому они помогают компилятору обнаруживать ошибки компиляции и т. Д. В большинстве случаев можно сказать, что они эквивалентны, но const
"Семантически более правильно".