GCC quietly accepts the following:

#define A a
#define B a
#if #A == #B
#endif

but it should not, because '#A == #B' is not an integer constant expression, 
see C99 section 6.10.1 
paragraph 1.  GCC does properly diagnose

#if "a" == "a"

-- 
           Summary: #if #A == #B should have a diagnostic
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Keywords: accepts-invalid
          Severity: normal
          Priority: P3
         Component: preprocessor
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: geoffk at gcc dot gnu dot org
                CC: dje at gcc dot gnu dot org,gcc-bugs at gcc dot gnu dot
                    org
 GCC build triplet: *
  GCC host triplet: *-*-*
GCC target triplet: *


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22168

Reply via email to