Поделиться через


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(){}

См. также

Ссылки

Директивы Pragma и ключевое слово __Pragma