Действительно ли макрос препроцессора "#define TRUE FALSE"?
Является ли следующий оператор определения действительным в C?
#define TRUE FALSE
Ответ 1
Вы должны помнить, что макросы препроцессора просто заменяются. Если вы делаете, например,
#define TRUE FALSE
то процессор просто заменяет все места, где он находит TRUE, будет заменен любым FALSE.
И действительно, это хорошее определение. И да, это, скорее всего, изменит рабочий процесс программы, возможно, очень неожиданными способами, которые могут даже вызвать поведение undefined.
Ответ 2
Так как мы должны ожидать, что TRUE уже определен, когда FALSE также определен.
Таким образом, в этом случае это будет переопределением и недействительным.
Если вы останетесь стажером, #define TRUE FALSE будет действителен для стандарта, но будет недействительным в соответствии со всеми логиками, которые я мог себе представить.