#pragma priority

C++ のみ

説明

#pragma priority ディレクティブは、静的オブジェクトが初期化される順序を指定します。

構文

構文図を読む構文図をスキップする>>-#--pragma--priority--(--n--)--------------------------------><
 

n の値は、101 から 65535 の範囲の整数リテラルでなければなりません。デフォルト値は 65535 です。A の低い値は高い優先順位を示しています。高い値は低い優先順位を示しています。

優先順位の値は、明示的値が変数属性 init_priority によって提供されている場合や、別の #pragma priority ディレクティブを検出した場合を除き、#pragma priority ディレクティブに続くすべてのグローバルおよび静的オブジェクトに適用されます。

同じ優先順位の値を持つオブジェクトは、宣言順に構成されます。 複数のファイル間のオブジェクトの構成順序を指定するには、#pragma priority を使用します。ただし、ソース・ファイルから実行可能ファイルまたは共用ライブラリー・ターゲットを作成している場合、コンパイラーは依存関係の順序付けをチェックし、 それにより #pragma priority が上書きされる可能性があります。

例えば、オブジェクト A のコピーがパラメーターとしてオブジェクト B のコンストラクターに渡されると、コンパイラーは上から下の順序、または #pragma priority の順序付けに違反することになっても、A が最初に構成されるように調整します。 このことは、コンパイラーが許可するオーダーレス・プログラミングに不可欠です。 ターゲットが .obj/.lib の場合、依存性を検出するための情報が十分ではない可能性があるため、この処理は行われません。

注:
C++ の変数属性 init_priority は、クラスの型の共用変数に優先順位を割り当てるためにも使用することができます。詳しくは、『init_priority 変数属性』を参照してください。

#pragma priority(1001)

関連情報