Я иногда пишу код примерно так:
// file1.cpp
#define DO_THIS 1
#if DO_THIS
// stuff
#endif
Во время разработки кода я могу переключить определение DO_THIS
между 0 и 1.
Недавно мне пришлось перестроить исходный код и скопировать код из одного файла в другой. Но я обнаружил, что совершил ошибку, и две части разделились так:
// file1.cpp
#define DO_THIS 1
и
// file2.cpp
#if DO_THIS
// stuff
#endif
Очевидно, я исправил ошибку, но потом подумал: почему компилятор не предупредил меня? У меня установлен уровень предупреждения 4. Почему не подозрительно #if X
, когда X не определен?
Еще один вопрос: есть ли какой-либо систематический способ узнать, совершил ли я ту же ошибку в другом месте? Проект огромен.
EDIT: я понимаю, что без предупреждения С#ifdef это имеет смысл. Но, конечно, #if отличается.