https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97998
Bug ID: 97998 Summary: GCC should not complain about double definitions of macros whose names begin with __STDC_ Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: preprocessor Assignee: unassigned at gcc dot gnu.org Reporter: zackw at panix dot com Target Milestone: --- Normally, GCC does not warn about a second definition of a preprocessor macro with the exact same expansion: #define some_ordinary_macro 1 #define some_ordinary_macro 1 /* no diagnostic */ However, GCC 9 and 10 *do* complain about this kind of redefinition if the name of the macro begins with __STDC_: #define __STDC_anything 1 #define __STDC_anything 1 /* warning: "__STDC_anything" redefined */ In particular, it will complain about double definitions of the various __STDC_WANT_*__ macros. The upcoming autoconf 2.70 will start defining many of those macros when the script uses AC_USE_SYSTEM_EXTENSIONS, and this broke code in APR's configure script that included the internal 'confdefs.h' (which accumulates the various #defines that will be emitted into config.h) a second time (autoconf test programs always include confdefs.h before doing anything else) I think GCC should treat __STDC_ macros the same as ordinary macros - no warning for a second definition with the same expansion. N.B. clang already behaves this way. (If the second definition has a *different* expansion, GCC complains regardless of the macro's name, and that behavior should not be changed.)