#pragma priority ディレクティブは、静的オブジェクトを初期化する順序を指定します。
>>-#--pragma--priority--(--n--)--------------------------------><
n の値は、 101 から 65535 までの範囲の整数リテラルでなければなりません。デフォルト値は 65535 です。小さな値は、優先順位が高いことを示します。大きな値は、優先順位が低いことを示します。
明示的な値が変数属性 init_priority によって指定されたり、別の #pragma priority ディレクティブが検出されたりしない限り、優先度の値は #pragma priority ディレクティブに続くすべてのグローバル・オブジェクトおよび静的オブジェクトに適用されます。
同じ優先度の値を持つオブジェクトは、宣言の順序で構成されます。 #pragma priority を使用して、複数のファイルにまたがったオブジェクトの作成順序を指定します。ただし、ソース・ファイルから、実行可能な、または共用のライブラリー・ターゲットを作成する場合、コンパイラーは、 #pragma priority をオーバーライドする可能性のある、依存性の順序付けを検査します。
例えば、オブジェクト A のコピーがオブジェクト B コンストラクターにパラメーターとして渡されると、コンパイラーは、上から下、または #pragma priority の順序に違反することになっても、最初に構成される A に対する調整を行います。このことは、コンパイラーが許可する、オーダーレス・プログラミングに不可欠です。ターゲットが .obj/.lib の場合、依存性を検出するための情報が十分ではない可能性があるため、この処理は行われません。
C++ の変数属性 init_priority は、クラス型の共用変数に優先順位を割り当てるためにも使用できます。詳しくは、「XL C/C++ ランゲージ・リファレンス」を参照してください。
#pragma priority(1001)
関連参照