4.7. Warning Messages and Error Messages

The GNU compiler can produce two kinds of diagnostics: errors and warnings. Each kind has a different purpose:

Warnings may indicate danger points where you should check to make sure that your program really does what you intend; or the use of obsolete features; or the use of nonstandard features of GNU C or C++. Many warnings are issued only if you ask for them, with one of the “-W” options (for instance, “-Wall” requests a variety of useful warnings).

The compiler always tries to compile your program if possible; it never gratuitously rejects a program whose meaning is clear merely because (for instance) it fails to conform to a standard. In some cases, however, the C and C++ standards specify that certain extensions are forbidden, and a diagnostic must be issued by a conforming compiler. The “-pedantic” option tells the compiler to issue warnings in such cases; “-pedantic-errors” says to make them errors instead. This does not mean that all non-ANSI constructs get warnings or errors.

See Section 1.6, for more detail on these and related command-line options.