http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49928
Summary: Only workaround for "-Wundef" is "defined(Macro) && Macro", but it is undefined behavior? Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: preprocessor AssignedTo: unassig...@gcc.gnu.org ReportedBy: schaub.johan...@googlemail.com It appears that to inhibit a warning about using an undefined macro identifier, one has to employ the following work-around #define FOO BAR #if FOO // warns about 'BAR' Instead: #define FOO defined BAR && BAR #if FOO Doesn't warn anymore then. But that yields to undefined behavior and IMO it's not intuitive, because "BAR" is still used but is undefined (this doesn't work like short circuiting or something), so I would think GCC provides another way to do this. If it doesn't exist yet, I would like to ask for a builtin, like #define FOO __possibly_undefined(BAR) // , or #define FOO ((BAR)) See https://bugs.webkit.org/show_bug.cgi?id=65401