RAD Studio |  |

#pragma option

Syntax

Copy Code

    #pragma option options
    #pragma option push options
    #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 [options...]

options 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:

Copy Code

    #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 #pragmas, #includes, #define, and some #ifs 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

Copy Code

    *

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 using push or 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:

Copy Code

    #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:

Copy Code

    #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:

Copy Code

    #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:

Copy Code

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

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!