C preprocessor
#define NOOP() int main() { int a; if (1 == 0) a = 0 NOOP(); return 0; }
これはコンパイルエラーにならない。NOOP()
が空に展開されたあと、セミコロンが残るからである。
このせいでバグが顕在化しないで見逃されることがある。
#define NOOP() int main() { int a; if (1 == 0) a = 0 NOOP(); return 0; }
これはコンパイルエラーにならない。NOOP()
が空に展開されたあと、セミコロンが残るからである。
このせいでバグが顕在化しないで見逃されることがある。