| title | section | ||
|---|---|---|---|
| ms.date | 11/04/2016 | ||
| f1_keywords |
|
||
| helpviewer_keywords |
|
||
| ms.assetid | c67215e9-2c4a-4b0f-b691-2414d2e2d96f |
Creates a section in an .obj file.
#pragma section( "section-name" [, attributes] )
The meaning of the terms segment and section are interchangeable in this topic.
Once a section is defined, it remains valid for the remainder of the compilation. However, you must use __declspec(allocate) or nothing will be placed in the section.
section-name is a required parameter that will be the name of the section. The name must not conflict with any standard section names. See /SECTION for a list of names you should not use when creating a section.
attributes is an optional parameter consisting of one or more comma-separated attributes that you want to assign to the section. Possible attributes are:
| Attribute | Description |
|---|---|
| read | Allows read operations on data. |
| write | Allows write operations on data. |
| execute | Allows code to be executed. |
| shared | Shares the section among all processes that load the image. |
| nopage | Marks the section as not pageable; useful for Win32 device drivers. |
| nocache | Marks the section as not cacheable; useful for Win32 device drivers. |
| discard | Marks the section as discardable; useful for Win32 device drivers. |
| remove | Marks the section as not memory-resident; virtual device drivers (VxD) only. |
If you do not specify attributes, the section will have read and write attributes.
In the following example, the first instruction identifies the section and its attributes. The integer j is not put into mysec because it was not declared with __declspec(allocate); j goes into the data section. The integer i does go into mysec as a result of its __declspec(allocate) storage-class attribute.
// pragma_section.cpp
#pragma section("mysec",read,write)
int j = 0;
__declspec(allocate("mysec"))
int i = 0;
int main(){}