#pragma option
Go Up to Pragma Directives Overview Index
Contents
Syntax (See Pseudo-grammar)
#pragma option OPT [ OPT ... ] #pragma option push OPT [ OPT ... ] #pragma option pop #pragma nopushoptwarn
Description
Use #pragma option
to include command-line options within your program code. #pragma option
can also be used with the push or pop arguments.
#pragma option OPT [ OPT ... ]
OPT
can be any command-line option (except those listed in the following paragraph). Any number of options can appear in one directive. For example, both of the following are valid:
#pragma option -C #pragma option -C -A
Any of the toggle options (such as -a or -K) can be turned on and off as on the command line. For these toggle options, you can also put a period following the option to return the option to its command line, configuration file, or option-menu setting. This allows you to temporarily change an option, and then return it to its default, without having to remember (or even needing to know) what the exact default setting was.
Options that cannot appear in a pragma option
include:
B |
c |
dname |
Dname=string |
efilename |
E |
Fx |
h |
Ifilename |
lexset |
M |
o |
P |
Q |
S |
T |
Uname |
V |
X |
Y |
You can use #pragma
s, #include
s, #define
, and some #if
s in the following cases:
- Before the use of any macro name that begins with two underscores (and is therefore a possible built-in macro) in an
#if
,#ifdef
,#ifndef
, or#elif
directive. - Before the occurrence of the first real token (the first C or C++ declaration).
Certain command-line options can appear only in a #pragma option
command before these events. These options are:
Efilename |
f |
i# |
m* |
npath |
ofilename |
U |
W |
z |
Other options can be changed anywhere. The following options will only affect the compiler if they get changed between functions or object declarations:
1 |
h |
r |
2 |
k |
rd |
A |
N |
v |
Ff |
O |
y |
G |
p |
Z |
The following options can be changed at any time and take effect immediately:
A |
gn |
zE |
b |
jn |
zF |
C |
K |
zH |
d |
wxxx |
The options can appear followed by a dot (.) to reset the option to its command-line state.
#pragma option push OPT [ OPT ... ]
and #pragma option pop
The #pragma option
directive can also be used with the push and pop arguments to enable you to easily modify compiler directives.
Using the #pragma option push
allows you to save all (or a selected subset of) options before including any files that could potentially change many compiler options and warnings, and then, with the single statement, #pragma option pop
, return to the previous state. For example:
#pragma option push #include <theworld.h> #pragma option pop #include "mystuff.h"
The #pragma option push
directive first pushes all compiler options and warning settings on a stack and then handles any options (if supplied). The following examples show how the #pragma option push
can be used with or without options:
#pragma option push -C -A #pragma option push
The #pragma option pop
directive changes compiler options and warnings by popping the last set of options and warnings from the stack. It gives a warning, "Pragma option pop with no matching option push", if the stack is empty, in which case nothing happens.
The following generates a warning about an empty stack:
#pragma option push #pragma option pop #pragma option pop /* Warning */
We do not recommend it, but you can turn off this warning with the directive: #pragma warn -nop
.
If you try to specify any options after pop, you get the error, "Nothing allowed after pragma option pop." For example, the following produces an error:
#pragma option pop -C/* ERROR */
If your stack of pushed options is not the same at the start of a file as at the end of a file, you receive a warning: "Previous options and warnings not restored." To turn off this warning, use the directive #pragma nopushoptwarn
.