#pragma option
pragma 指令の概要:インデックス への移動
目次
構文 (「疑似文法」を参照)
#pragma option OPT [ OPT ... ] #pragma option push OPT [ OPT ... ] #pragma option pop #pragma nopushoptwarn
説明
#pragma option
は,プログラムコード内にコマンドラインオプションを入れるために使用します。 #pragma option
は,push または pop 引数とともに使用することもできます。
#pragma option OPT [ OPT ... ]
オプションは,下記に示すものを除いて,どんなコマンドラインオプションでも記述できます。 1 つの指令に複数のオプションを指定することができます。 たとえば,以下のコードは両方とも有効です。
#pragma option -C #pragma option -C -A
-a や -K などの切り替えオプションは,コマンドラインで行うのと同様にオン/オフの指定ができます。 これらのオプションでは,その後ろにピリオドを置くと,コマンドライン,環境設定ファイル,またはオプションメニューで設定したオプションに戻せます。 こうすると,オプションを一時的に変えてまたデフォルトに戻すことができ,正しいデフォルトの設定を覚えておく必要がありません。
#pragma option
で使用できないオプションは以下のとおりです。
B |
c |
dname |
Dname=string |
efilename |
E |
Fx |
h |
Ifilename |
lexset |
M |
o |
P |
Q |
S |
T |
Uname |
V |
X |
Y |
#pragma
,#include
,#define
,および一部の #if
は,以下のものがソースコード中に出現する前に使用できる。
- 2 つの下線記号で始まる(組み込みマクロの可能性のある)マクロ名を使用する
#if
,#ifdef
,#ifndef
,#elif
指令の出現 - 最初の実トークン(最初の C または C++ 宣言)の出現
これらが最初に出現する前にしか,#pragma option
によって指定できないコマンドラインオプションがあります。 このようなオプションを以下にまとめます。
Efilename |
f |
i# |
m* |
npath |
ofilename |
U |
W |
z |
ほかのオプションはどこにあっても変更可能です。 次に示すオプションは,関数と関数の間,あるいはオブジェクトの宣言の間で変更された場合にだけコンパイラに影響を及ぼします。
1 |
h |
r |
2 |
k |
rd |
A |
N |
v |
Ff |
O |
y |
G |
p |
Z |
次のオプションはいつでも変更でき,ただちに有効になります。
A |
gn |
zE |
b |
jn |
zF |
C |
K |
zH |
d |
wxxx |
オプションの後ろにピリオド (.) を指定すると,オプションをリセットしてコマンドラインの状態に戻せます。
#pragma option push OPT [ OPT ... ]
および #pragma option pop
#pragma option
指令に push 引数または pop 引数を伴って使用すれば,コンパイラ指令を簡単に変更することも可能です。
#pragma option push
指令を使用すると,多くのコンパイラオプションや警告に影響を与える可能性のあるファイルを任意の数だけインクルードするにあたって,すべて(または,選択した一部)のオプションを保存することができます。それから単文の #pragma option pop
指令を使用すれば,元の状態に戻すことができます。 次に例を示します。
#pragma option push #include <theworld.h> #pragma option pop #include "mystuff.h"
#pragma option push
指令はまず,すべてのコンパイラオプションと警告の設定をスタックにプッシュし,指定があれば任意のオプションを操作します。 以下に,オプションを使用する場合と使用しない場合の両方における #pragma option push
指令の用法例を示します。
#pragma option push -C -A #pragma option push
#pragma option pop
指令は,最も新しくプッシュされたコンパイラオプションと警告のセットをスタックからポップして,オプションと警告を変更します。 スタックが空で結果として何も起こらない場合,「Pragma option pop with no matching option push,」という警告が表示されます。
以下のコードは,空のスタックに関する警告を生成します。
#pragma option push #pragma option pop #pragma option pop /* 警告 */
#pragma warn -nop
指令を使って,この警告を無効にすることも可能ですが,このような操作はできる限り避けてください。
pop オプションの後にオプションの指定を試みると,「Nothing allowed after pragma option pop.」というエラーが発生します。 たとえば,次のコードはエラーを生成します。
#pragma option pop -C/* エラー */
プッシュされたオプションのスタックがファイルの前後で一致しない場合,「Previous options and warnings not restored.」という警告が表示されます。 この警告を無効にするには,#pragma nopushoptwarn
指令を使います。