セクション

.obj ファイルにセクションを作成します。

#pragma section( "section-name" [, attributes] )

解説

このトピックでは、セグメントとセクションは同義の用語です。

セクションを定義すると、そのセクションはそれ以降のコンパイルで有効になります。 ただし、__declspec(allocate) を使用する必要があります。これを使用しないと、定義したセクションに何も配置されません。

section-name は、セクションの名前となる必須パラメーターです。 標準セクション名と競合する名前は付けられません。 セクションを作成する場合に使用しない名前のリストについては、「/SECTION」を参照してください。

省略可能なパラメーター attributes には、セクションに割り当てる 1 つ以上の属性をコンマで区切って指定します。 指定できる attributes は次のとおりです。

  • read
    データの読み取り操作を有効にします。

  • write
    データの書き込み操作を有効にします。

  • execute
    コードを実行できるようにします。

  • shared
    イメージを読み込んだすべてのプロセス間でセクションを共有します。

  • nopage
    セクションをページング不可にします。Win32 デバイス ドライバー用です。

  • nocache
    セクションをキャッシュ不可にします。Win32 デバイス ドライバー用です。

  • discard
    セクションを破棄可能にします。Win32 デバイス ドライバー用です。

  • remove
    セクションをメモリ非常駐として指定します。仮想デバイス ドライバー (VxD) のみ。

属性を指定しない場合、セクションには読み取り属性と書き込み属性が設定されます。

使用例

次の例では、最初の命令でセクションとその属性を指定しています。 __declspec(allocate) を使用して宣言していないので、整数 j は mysec に追加されません。j はデータ セクションに配置されます。 整数 i は、その __declspec(allocate) ストレージ クラス属性の結果として mysec に追加されます。

// pragma_section.cpp
#pragma section("mysec",read,write)
int j = 0;

__declspec(allocate("mysec"))
int i = 0;

int main(){}

参照

関連項目

プラグマ ディレクティブと __Pragma キーワード