section
pragma
Создает раздел в OBJ-файле.
Синтаксис
#pragma section( "
имя"
раздела [,
атрибуты ])
Замечания
Сегмент терминов и раздел имеют то же значение в этой статье.
После определения раздела он остается допустимым для остальной части компиляции. Тем не менее, необходимо использовать __declspec(allocate)
или ничего не помещается в раздел.
имя раздела — это обязательный параметр, который становится именем раздела. Имя не должно конфликтовать со стандартными именами раздела. Список /SECTION
имен, которые не следует использовать при создании раздела.
атрибуты — это необязательный параметр, состоящий из одного или нескольких атрибутов, разделенных запятыми, для назначения разделу. Возможные атрибуты :
Атрибут | Description |
---|---|
read |
Позволяет выполнять операции чтения данных. |
write |
Позволяет выполнять операции записи данных. |
execute |
Позволяет выполнять код. |
shared |
Предоставляет совместный доступ к разделу всем процессам, загружающим образ. |
nopage |
Помечает раздел как недоступный для страницы. Полезно для драйверов устройств Win32. |
nocache |
Помечает раздел как недоступный для кэширования. Полезно для драйверов устройств Win32. |
discard |
Помечает раздел как отменяемый. Полезно для драйверов устройств Win32. |
remove |
Помечает раздел как не резидентный в памяти. Только для драйверов виртуальных устройств (VxD). |
Если атрибуты не указаны, раздел содержит read
и write
атрибуты.
Пример
В этом примере первый раздел определяет раздел pragma и его атрибуты. Целое число j
не помещается mysec
, так как оно не было объявлено с помощью __declspec(allocate)
. Вместо этого j
перейдите в раздел данных. Целое число i
переходит в mysec
силу атрибута __declspec(allocate)
класса хранилища.
// pragma_section.cpp
#pragma section("mysec",read,write)
int j = 0;
__declspec(allocate("mysec"))
int i = 0;
int main(){}
См. также
директивы Pragma и ключевые слова __pragma
и _Pragma