data_seg

指定 .obj 文件中用于存储初始化变量的数据段。

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

备注

本主题中的术语“段”和“节”的含义是可互换的。

可使用 dumpbin 应用程序查看 OBJ 文件。 .obj 文件中用于存储初始化变量的默认段是 .data。 未初始化的变量被视为初始化为零并且存储在 .bss 中。

不带参数的 data_seg 将段重置为 .data。

  • push(可选)
    将一个记录置于内部编译器堆栈上。 push 可具有 identifiersegment-name

  • pop(可选)
    从内部编译器堆栈的顶部移除一个记录。

  • identifier(可选)
    当与 push 一起使用时,为内部编译器堆栈上的记录指定名称。 当与 pop 一起使用时,将从内部堆栈中弹出记录,直到删除 identifier;如果未在内部堆栈中找到 identifier,则不会弹出任何内容。

    利用 identifier,可使多个记录与一个 pop 命令一起弹出。

  • "segment-name"(可选)
    段的名称。当与 pop 一起使用时,将弹出堆栈并且 segment-name 将变为活动的段名称。

  • "segment-class" (可选)
    包括与 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 指令和 __Pragma 关键字