プラグマ・ディレクティブを使用することにより、プログラム・ソース内にコンパイラー・オプションを指定することができます。
プラグマハコンパイラーに対してインプリメンテーションを定義した命令です。これは、以下の一般形式の 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++ でサポートされるさまざまなプラグマ・プリプロセッサー・ディレクティブについて詳しくは、コンパイラー・プラグマ参照を参照してください。