cpp: Traditional warnings
1
1 10.4 Traditional warnings
1 =========================
1
1 You can request warnings about features that did not exist, or worked
1 differently, in traditional C with the '-Wtraditional' option. GCC does
1 not warn about features of ISO C which you must use when you are using a
1 conforming compiler, such as the '#' and '##' operators.
1
1 Presently '-Wtraditional' warns about:
1
1 * Macro parameters that appear within string literals in the macro
1 body. In traditional C macro replacement takes place within string
1 literals, but does not in ISO C.
1
1 * In traditional C, some preprocessor directives did not exist.
1 Traditional preprocessors would only consider a line to be a
1 directive if the '#' appeared in column 1 on the line. Therefore
1 '-Wtraditional' warns about directives that traditional C
1 understands but would ignore because the '#' does not appear as the
1 first character on the line. It also suggests you hide directives
1 like '#pragma' not understood by traditional C by indenting them.
1 Some traditional implementations would not recognize '#elif', so it
1 suggests avoiding it altogether.
1
1 * A function-like macro that appears without an argument list. In
1 some traditional preprocessors this was an error. In ISO C it
1 merely means that the macro is not expanded.
1
1 * The unary plus operator. This did not exist in traditional C.
1
1 * The 'U' and 'LL' integer constant suffixes, which were not
1 available in traditional C. (Traditional C does support the 'L'
1 suffix for simple long integer constants.) You are not warned
1 about uses of these suffixes in macros defined in system headers.
1 For instance, 'UINT_MAX' may well be defined as '4294967295U', but
1 you will not be warned if you use 'UINT_MAX'.
1
1 You can usually avoid the warning, and the related warning about
1 constants which are so large that they are unsigned, by writing the
1 integer constant in question in hexadecimal, with no U suffix.
1 Take care, though, because this gives the wrong result in exotic
1 cases.
1