#define struct union and #define else still compiles any C program?
c, c-preprocessor, language-lawyer, struct, unions
Solution
I managed to find a counterexample (C99):
for (int i = 0; i < 5; ++i)
if (i > 2)
do_smth();
else if (i < 4)
do_smth_else();
This one doesn't compile because if you `#define else` the variable `i` goes out of scope. But that doesn't involve the `#define struct union` thing. Any other ideas?
Problem
Someone claimed in a presentation that if you add ``` #define struct union #define else ``` at the beginning of any valid C program, that program would still compile. That seems like a bold claim. Any counterexample you have in mind and prove that guy wrong?