Ah there are funnier, less obvious ways
Also, I'm not sure how you think it's particularly obvious (as opposed to any other #define trick). It does only work if the project isn't warning-safe, as there are various ways this'll trigger ugly warnings (eg. using designated initializer syntax causes re-initialization warnings), but even then the warnings don't tend to actually tell you it's a union all of a sudden.
If you have others, I'd like to hear them.
#define if while
#define else while(!true){}
That should be interesting.- Remember the order of includes change how they are applied. Have a #define that changes something in a .h that's included in some files but not in others
- (Depending on the software) redefine rand() to be almost predictable or with a short loop
#define TRUE FALSE
or the even more pernicious: #define 1 0Might have been the Lua Programming Gems book...