data_seg
初期化された変数が格納される、.obj ファイルのデータ セグメントを指定します。
#pragma data_seg( [ [ { push | pop }, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )
解説
このトピックでは、セグメントとセクションは同義の用語です。
OBJ ファイルは dumpbin アプリケーションで表示できます。 初期化される変数の .obj ファイルの既定セグメントは、.data です。 初期化されていない変数は、ゼロに初期化されたものと見なされ、bss に格納されます。
パラメーターなしの data_seg により、セグメントは .data にリセットされます。
push (省略可能)
レコードを内部コンパイラ スタックに格納します。 push は identifier と segment-name を持つことができます。pop (省略可能)
内部コンパイラ スタックの最上部からレコードを削除します。identifier (省略可能)
push と共に使用した場合、内部コンパイラ スタックのレコードに名前を割り当てます。 pop と共に使用した場合、identifier が削除されるまでレコードを内部スタックからポップします。identifier が内部スタックにない場合は何もポップされません。identifier を使用すると、1 つの pop コマンドで複数のレコードをポップできます。
"segment-name" (省略可能)
セグメントの名前。 pop と共に使用した場合、スタックがポップされ、segment-name がアクティブなセグメント名になります。"segment-class" (省略可能)
Version 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 変数のセクション (const_seg)、初期化されていないデータのセクション (bss_seg)、および関数のセクション (code_seg) を指定することもできます。