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

Reply via email to