The arguments to a macro should not include preprocessor directives, such as #define, #ifdef, and #include. Doing so is undefined behavior, according to section subclause 6.10.3, paragraph 11, of the C Standard [ISO/IEC 9899:2011]:
...
| [GCC Bugs] | "Non-bugs" |
| [ISO/IEC 9899:2011] | Section Subclause 6.10.3, "Macro Replacement" |
...