section
Создает раздел в OBJ-файле.
#pragma section( "section-name" [, attributes] )
Заметки
Термины сегмент и раздел в этом разделе взаимозаменимы.
После определения раздел остается допустимым для остальной части компиляции. Однако следует использовать __declspec(allocate), так как иначе никакие данные не будут помещены в раздел.
section-name — обязательный параметр, который будет именем раздела. Имя не должно конфликтовать со стандартными именами раздела. Список имен, которые не следует использовать при создании раздела, см. в разделе /SECTION.
attributes — необязательный параметр, состоящий из одного или нескольких разделенных запятыми атрибутов, которые требуется присвоить разделу. Ниже перечислены возможные attributes.
read (чтение)
Позволяет выполнять операции чтения данных.write (запись)
Позволяет выполнять операции записи данных.execute
Позволяет выполнять код.shared
Предоставляет совместный доступ к разделу всем процессам, загружающим образ.nopage
Отмечает раздел как невыгружаемый; используются для драйверов устройств Win32.nocache
Отмечает раздел как некэшируемый; используются для драйверов устройств Win32.discard
Отмечает раздел как удаляемый; используются для драйверов устройств Win32.remove
Отмечает раздел как нерезидентный; только драйверы виртуальных устройств (VxD).
Если не задать атрибуты, раздел будет иметь атрибуты чтения и записи.
Пример
В следующем примере первая инструкция определяет раздел и его атрибуты. Целое число 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(){}