documentation bug
aotto
aotto1968@t-online.de
Mon Dec 16 11:27:00 GMT 2019
------------------------------------------------------------------------
6.62.13 Diagnostic Pragmas
GCC allows the user to selectively enable or disable certain types of
diagnostics, and change the kind of the diagnostic. For example, a
projectâs policy might require that all sources compile with -Werror but
certain files might have exceptions allowing specific types of warnings.
Or, a project might selectively enable diagnostics and treat them as
errors depending on which preprocessor macros are defined.
|#pragma GCC diagnostic kind option|
Modifies the disposition of a diagnostic. Note that not all
diagnostics are modifiable; at the moment only warnings (normally
controlled by â-Wâ¦â) can be controlled, and not all of them. Use
-fdiagnostics-show-option to determine which diagnostics are
controllable and which option controls them.
kind is âerrorâ to treat this diagnostic as an error, âwarningâ to
treat it like a warning (even if -Werror is in effect), or âignoredâ
if the diagnostic is to be ignored. option is a double quoted string
that matches the command-line option.
#pragma GCC diagnostic warning "-Wformat"
#pragma GCC diagnostic error "-Wformat"
#pragma GCC diagnostic ignored "-Wformat"
Note that these pragmas override any command-line options. GCC keeps
track of the location of each pragma, and issues diagnostics
according to the state as of that point in the source file. Thus,
pragmas occurring after a line do not affect diagnostics caused by
that line.
|#pragma GCC diagnostic push|
|#pragma GCC diagnostic pop|
Causes GCC to remember the state of the diagnostics as of each
|push|, and restore to that point at each |pop|. If a |pop| has no
matching |push|, the command-line options are restored.
#pragma GCC diagnostic error "-Wuninitialized"
foo(a); /* error is given for this one */
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wuninitialized"
foo(b); /* no diagnostic for this one */
#pragma GCC diagnostic pop
foo(c); /* error is given for this one */
#pragma GCC diagnostic pop
foo(d); /* depends on command-line options */
in the example above the "push" and the "pop" does NOT match,
more "pop" than "push"
mfg, AO
More information about the Gcc-help
mailing list