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


data_seg pragma

Указывает раздел данных (сегмент), где инициализированные переменные хранятся в файле объекта (.obj).

Синтаксис

#pragma data_seg([ "section-name" [ , "section-class" ])
#pragma data_seg({ } pushpop | [ , идентификатор ] [ , "section-name" [ , "section-class" ])

Параметры

push
(Необязательно) Помещает запись во внутренний стек компилятора. Может push иметь идентификатор и имя раздела.

pop
(Необязательно) Удаляет запись из верхней части внутреннего стека компилятора. Может pop иметь идентификатор и имя раздела. Вы можете отображать несколько записей, используя только одну pop команду с помощью идентификатора. Имя раздела становится активным именем раздела данных после всплывающего окна.

идентификатор
(Необязательно) При использовании с pushименем назначается запись во внутреннем стеке компилятора. При использовании с pop, всплывает записи из внутреннего стека, пока не будет удален идентификатор . Если идентификатор не найден во внутреннем стеке, ничего не отображается.

идентификатор позволяет создавать несколько записей с помощью одной pop команды.

"section-name"
(Необязательно) Имя раздела. При использовании стека popотображается, а имя раздела становится активным именем раздела данных.

"section-class"
(Необязательно) Игнорируется, но включена для совместимости с версиями Microsoft C++ более ранней версии 2.0.

Замечания

Раздел в файле объекта — это именованный блок данных, загруженных в память в виде единицы. Раздел данных — это раздел , содержащий инициализированные данные. В этой статье сегмент терминов и раздел имеют то же значение.

Раздел по умолчанию в файле .obj для инициализированных переменных..data Переменные, неинициализированные, считаются инициализированными до нуля и хранятся в .bss.

Директива data_segpragma сообщает компилятору поместить все инициализированные элементы данных из единицы перевода в раздел данных с именем section-name. По умолчанию раздел данных, используемый для инициализированных данных в файле объекта, называется .data. Переменные, неинициализированные, считаются инициализированными до нуля и хранятся в .bss. data_segpragma Директива без параметра section-name сбрасывает имя раздела данных для последующих инициализированных элементов .dataданных.

Данные, выделенные с помощью, data_seg не сохраняют никаких сведений о его расположении.

Список имен, которые не должны использоваться для создания раздела, см. в разделе /SECTION.

Можно также указать разделы для переменных константа (), неинициализированных данных (const_segbss_seg) и функций (code_seg).

Приложение DUMPBIN.EXE можно использовать для просмотра файлов объектов. Версии DUMPBIN для каждой поддерживаемой целевой архитектуры включены в Visual Studio.

Пример

// pragma_directive_data_seg.cpp
int h = 1;                     // stored in .data
int i = 0;                     // stored in .bss
#pragma data_seg(".my_data1")
int j = 1;                     // stored in .my_data1

#pragma data_seg(push, stack1, ".my_data2")
int l = 2;                     // stored in .my_data2

#pragma data_seg(pop, stack1)   // pop stack1 off the stack
int m = 3;                     // stored in .my_data1

int main() {
}

См. также

Pragma директивы и ключевые __pragma _Pragma слова