https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81721
--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Here is a much simplier testcase (without using system header files): a.h: # define __glibc_macro_warning1(message) _Pragma (#message) # define __glibc_macro_warning(message) \ __glibc_macro_warning1 (GCC warning message) #define __SYSMACROS_DM1(...) __glibc_macro_warning (#__VA_ARGS__) #define __SYSMACROS_DM(symbol) __SYSMACROS_DM1 \ (Did not Work) # define major(dev) __SYSMACROS_DM (major) (dev+0) ---- CUT --- a.c: #include "a.h" int main(void){ major(0);} ---- CUT ---- I will submit a patch for this soon.