The pedantic option to gcc to forces ANSI-compatibility of code.
The -pedantic
option of gcc is a stricter version of the related -ansi
and -std=
options, which specify C standard versions that should be complied to. Though these options disable non-compliant extensions, the -pedantic
option goes further. Not only does it disable these extensions, it issues warnings for all instances of code non-compliance that the standard requires a diagnostic for, and rejects more non-compliant code than the other options alone.
There is also the -pedantic-errors
option, issuing errors instead of warnings.
However, even this cannot detect or block every instance of ISO C non-compliance.
From the gcc manpage:
**-Wpedantic**
**-pedantic**
Issue all the warnings demanded by strict ISO C and ISO C++;
reject all programs that use forbidden extensions, and some
other programs that do not follow ISO C and ISO C++. For ISO
C, follows the version of the ISO C standard specified by any
-std option used.
Valid ISO C and ISO C++ programs should compile properly with
or without this option (though a rare few require -ansi or a
-std option specifying the required version of ISO C).
However, without this option, certain GNU extensions and
traditional C and C++ features are supported as well. With
this option, they are rejected.
-Wpedantic does not cause warning messages for use of the
alternate keywords whose names begin and end with __.
Pedantic warnings are also disabled in the expression that
follows "__extension__". However, only system header files
should use these escape routes; application programs should
avoid them.
Some users try to use -Wpedantic to check programs for strict
ISO C conformance. They soon find that it does not do quite
what they want: it finds some non-ISO practices, but not
all---only those for which ISO C requires a diagnostic, and
some others for which diagnostics have been added.
A feature to report any failure to conform to ISO C might be
useful in some instances, but would require considerable
additional work and would be quite different from -Wpedantic.
We don't have plans to support such a feature in the near
future.
Where the standard specified with -std represents a GNU
extended dialect of C, such as gnu90 or gnu99, there is a
corresponding base standard, the version of ISO C on which
the GNU extended dialect is based. Warnings from -Wpedantic
are given where they are required by the base standard. (It
does not make sense for such warnings to be given only for
features not in the specified GNU C dialect, since by
definition the GNU dialects of C include all features the
compiler supports with the given option, and there would be
nothing to warn about.)
**-pedantic-errors**
Give an error whenever the base standard (see -Wpedantic)
requires a diagnostic, in some cases where there is undefined
behavior at compile-time and in some other cases that do not
prevent compilation of programs that are valid according to
the standard. This is not equivalent to -Werror=pedantic,
since there are errors enabled by this option and not enabled
by the latter and vice versa.