https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78538

            Bug ID: 78538
           Summary: system header diagnostic for enum with a define is not
                    good
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: minor
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pinskia at gcc dot gnu.org
  Target Milestone: ---

Take:

t.c:
#define a 1024
#include "t.h"

---- CUT ----

t.h:
#pragma GCC system_header
enum
{
  a = 1024
};

---- CUT ----
We only get:
t.c:1:11: error: expected identifier before numeric constant
 #define a 1024
           ^

With -save-temps, we get:
In file included from t.c:2:0:
t.h:4:2: error: expected identifier before numeric constant
   a = 1024
  ^~~~

Which is better.
If we did not have pragma GCC system_header in t.h we get:
t.c:1:11: error: expected identifier before numeric constant
 #define a 1024
           ^
t.h:4:3: note: in expansion of macro ‘a’
   a = 1024
   ^

Which is what you expect in the first place.

Reply via email to