You can request warnings about features that did not exist, or worked differently, in traditional C with the -Wtraditional
option. GCC does not warn about features of ISO C which you must use when you are using a conforming compiler, such as the ‘#
’ and ‘##
’ operators.
Presently -Wtraditional
warns about:
#
’ appeared in column 1 on the line. Therefore -Wtraditional
warns about directives that traditional C understands but would ignore because the ‘#
’ does not appear as the first character on the line. It also suggests you hide directives like ‘#pragma
’ not understood by traditional C by indenting them. Some traditional implementations would not recognize ‘#elif
’, so it suggests avoiding it altogether. U
’ and ‘LL
’ integer constant suffixes, which were not available in traditional C. (Traditional C does support the ‘L
’ suffix for simple long integer constants.) You are not warned about uses of these suffixes in macros defined in system headers. For instance, UINT_MAX
may well be defined as 4294967295U
, but you will not be warned if you use UINT_MAX
. You can usually avoid the warning, and the related warning about constants which are so large that they are unsigned, by writing the integer constant in question in hexadecimal, with no U suffix. Take care, though, because this gives the wrong result in exotic cases.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.3/cpp/Traditional-warnings.html