11.10 Warning Messages and Error Messages

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

Errors report problems that make it impossible to compile your
program. GCC reports errors with the source file name and line
number where the problem is apparent.

Warnings report other unusual conditions in your code that
may indicate a problem, although compilation can (and does)
proceed. Warning messages also report the source file name and line
number, but include the text `warning:' to distinguish them
from error messages.

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).

GCC 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 GCC to issue warnings in
such cases; -pedantic-errors says to make them errors instead.
This does not mean that all non-ISO constructs get warnings
or errors.