What does __STRICT_ANSI__ mean in C (not C++) mode?

The doc says: "The macro `__STRICT_ANSI__' is predefined when the `-ansi'
option is used." I.e. when the compiler is implementing strict ISO C90.

But it is also defined when the compiler is implementing strict ISO C99.
$ touch empty.c
$ gcc -std=c99 -E -dM empty.c | grep '\(__STRICT\|__STDC_V\)'
#define __STRICT_ANSI__ 1
#define __STDC_VERSION__ 199901L

And -ansi is not implied in this mode: -std=c99 -ansi apparently means
strict ISO C90:
$ gcc -std=c99 -ansi -E -dM empty.c | grep '\(__STRICT\|__STDC_V\)'
#define __STRICT_ANSI__ 1

Possible resolutions:
A) Document that __STRICT_ANSI__ can also mean strict ISO C99.
B) Change "gcc -std=c99" to define __STRICT_C99__ instead of __STRICT_ANSI__.


-- 
           Summary: __STRICT_ANSI__ meaning incorrectly documented
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: bruno at clisp dot org
 GCC build triplet: x86_64-suse-linux
  GCC host triplet: x86_64-suse-linux
GCC target triplet: x86_64-suse-linux


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

Reply via email to