data_seg

初期化された変数は .obj ファイルに格納されているデータ セグメントを指定します。

#pragma data_seg( [ [ { push | pop }, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )

解説

用語の意味は セグメント化し、セクションは このトピック内の置換可能です。

オブジェクト ファイルは dumpbin アプリケーションで表示できます。初期化された変数の .obj ファイルの既定セグメントは .data です。初期化されていない変数がゼロに初期化されると見なされ、 bss に格納されます

パラメーターなし のdata_seg は .data にセグメントをリセットします。

  • push(省略可能)
    コンパイラの内部スタックにレコードを配置します。pushIDセグメント名前を付けることができます。

  • pop (省略可能)
    コンパイラの内部スタックの最上位からレコードを削除します。

  • ID (省略可能)
    割り当て名前、コンパイラの内部スタックのレコードに pushに使用された場合。popを使用すると、 pop は内部スタックから ID が 削除されるまで記録します; ID が 内部スタックにない場合は、何もポップ鳴りません。

    ID はpop 一つのコマンドとポップする複数のレコードを有効にします。

  • 「segment " 名前」(省略可能)
    セグメントの名前*。*popを使用すると、スタックがポップされ、 セグメント名前は 、実行中のセグメント名になります。

  • 「segment " クラス」 (省略可能)
    バージョン 2.0 までは C++ の互換性のためにインクルードされます。これは無視されます。

使用例

// pragma_directive_data_seg.cpp
int h = 1;                     // stored in .data
int i = 0;                     // stored in .bss
#pragma data_seg(".my_data1")
int j = 1;                     // stored in "my_data1"

#pragma data_seg(push, stack1, ".my_data2")   
int l = 2;                     // stored in "my_data2"

#pragma data_seg(pop, stack1)   // pop stack1 off the stack
int m = 3;                     // stored in "stack_data1"

int main() {
}

data_seg を使用して割り当てられたデータは頻繁に関する情報を保持しません。

使用しない名前の一覧については、を参照してください /SECTION セクションを作成したとき。

定数または変数 ()const_seg、初期化されていないデータ (bss_seg)、および関数 (code_seg)にセクションを指定できます。

参照

関連項目

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