2023-12-05 (Tue)

C preprocessor

#define NOOP()
  
int main() {
        int a;
        if (1 == 0)
                a = 0

        NOOP();
        return 0;
}

これはコンパイルエラーにならない。NOOP() が空に展開されたあと、セミコロンが残るからである。 このせいでバグが顕在化しないで見逃されることがある。

読んだ