Нет, это не нужно определять.Если идентификатор не определен в конце расширения #if
, он оценивается как 0
.
Из ANSI C90:
После всех замен из-за расширения макроса иdefined
был выполнен унарный оператор, все оставшиеся идентификаторы заменены на номер pp 0
.
Это, однако, может отсутствовать в компиляторах до стандартизации C.Однажды я увидел предупреждение GCC об этом (я думаю, что это было на MinGW), но я не могу найти источник для него прямо сейчас.
Вывод: Все совместимые со стандартами компиляторы C должныне выдавайте ошибку при встрече с этим.Вам не нужно определять макрос перед его использованием в #if
.