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)。 |
如果未指定任何属性,则分区具有 read
和 write
属性。
示例
在此示例中,第一个分区 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(){}