プログラム・ソース・ファイルでのコンパイラー・オプションの指定

プラグマ・ディレクティブを使用することにより、プログラム・ソース内にコンパイラー・オプションを指定することができます。

プラグマハコンパイラーに対してインプリメンテーションを定義した命令です。これは、以下の一般形式の 1 つを持っています。

構文図を読む構文図をスキップする                .--------------------.
              V                    |
>>-#--pragma----character_sequence-+---------------------------><
 

ここで、character_sequence は特定のコンパイラー命令と引数がある場合にそれを提供する一連の文字です。 複数のプラグマの構成を、単一のプラグマ・ディレクティブに指定することができます。

単項演算子 _Pragma は、プリプロセッサー・マクロがプラグマ・ディレクティブに含まれることを許可します。

構文図を読む構文図をスキップする>>-_Pragma--(string_literal)-----------------------------------><
 

string_literal には、それを wide-string リテラルにするプレフィックス L が付いていることがあります。このストリング・リテラルはストリング変換されてトークン化されます。結果のトークンのシーケンスは、それがプラグマ・ディレクティブに現れているかのように処理されます。例:

_Pragma ( "pack(full)" ) 

これは以下と同等です:

#pragma pack(full)

プラグマの character_sequence は、特に指定がない限り、マクロ置換されます。 コンパイラーは、認識されないプラグマを無視し、無視したことを示す通知メッセージを発行します。

プログラム・ソース・ファイル内にプラグマ・ディレクティブを使用して指定されたオプションは、他のプラグマ・ディレクティブを除き、他のすべてのオプション設定をオーバーライドします。同じプラグマ・ディレクティブを複数回指定した場合の効果はさまざまです。特定情報については、それぞれのプラグマの記述を参照してください。

プラグマ設定は組み込みファイルに及ぶことがあります。プラグマ設定の潜在的な副次効果を避けるために、プログラム・ソース内でプラグマで定義された振る舞いが必要なくなった時点で、プラグマ設定のリセットを検討してください。いくつかのプラグマ・オプションでは、それを支援するために、reset または pop サブオプションが提供されます。 これらのプラグマ・ディレクティブは、それが適用されるオプションの詳細記述にリストされています。

XL C/C++ でサポートされるさまざまなプラグマ・プリプロセッサー・ディレクティブについて詳しくは、コンパイラー・プラグマ参照を参照してください。