section pragma

在 OBJ 文件中创建分区。

语法

#pragma section( "section-name "[ , 属性 ])

注解

在本文中,术语“段”和“节”的含义相同

一旦分区被定义,它将对编译的其余部分保持有效。 但是,必须使用 __declspec(allocate),否则分区中将不会有任何内容。

section-name 是一个必需参数,它将是此分区的名称。 该名称不得与任何标准节名称发生冲突。 有关在创建分区时不应使用的名称的列表,请参阅 /SECTION

attributes 是一个可选参数,包括要分配给此分区的一个或多个由逗号分隔的特性。 可能的属性

属性 说明
read 允许对数据进行读取操作。
write 允许对数据进行写入操作。
execute 允许执行代码。
shared 在所有加载图像的进程之间共享该节。
nopage 将此分区标记为不可分页。 适用于 Win32 设备驱动程序。
nocache 将此分区标记为不可缓存。 适用于 Win32 设备驱动程序。
discard 将此分区标记为可丢弃。 适用于 Win32 设备驱动程序。
remove 将此分区标记为不常驻内存。 仅限虚拟设备驱动程序 (VxD)。

如果未指定任何属性,则分区具有 readwrite 属性。

示例

在此示例中,第一个分区 pragma 标识分区及其属性。 整数 j 未放入 mysec 中,因为它未使用 __declspec(allocate) 声明。 相反,j 转到数据分区。 因为 __declspec(allocate) 存储类特性,整数 i 将转到 mysec

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

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

int main(){}

另请参阅

Pragma指令和__pragma_Pragma关键字