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


bss_seg

Задает сегмент, в котором неинициализированные переменные сохраняются в OBJ-файле.

#pragma bss_seg( [ [ { push | pop }, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] )

Заметки

OBJ-файлы можно просматривать в приложении dumpbin. По умолчанию сегмент в OBJ-файле для неинициализированных данных — BSS. В некоторых случаях использование bss_seg может ускорить время загрузки благодаря группировке неинициализированных данных в один раздел.

bss_seg без параметров сбрасывает сегмент до BSS.

  • push (необязательно)
    Помещает запись во внутренний стек компилятора. Ключевое слово push может иметь идентификатор и имя-сегмента.

  • pop (необязательно)
    Удаляет запись из вершины внутреннего стека компилятора.

  • идентификатор (необязательно)
    Если используется с ключевым словом push, назначает имя записи во внутреннем стеке компилятора. Если используется с ключевым словом pop, выводит запись из внутреннего стека до тех пор, пока не будет удален соответствующий идентификатор. Если этот идентификатор во внутреннем стеке не найден, записи не выводятся.

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

  • "имя-сегмента" (необязательно)
    Имя сегмента*.* Если используется с ключевым словом pop, то стек выводится, а имя-сегмента становится активным именем сегмента.

  • "класс-сегмента" (необязательно)
    Включено для обеспечения совместимости с C++ до версии 2.0. Игнорируется.

Пример

// pragma_directive_bss_seg.cpp
int i;                     // stored in .bss
#pragma bss_seg(".my_data1")
int j;                     // stored in "my_data1"

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

#pragma bss_seg(pop, stack1)   // pop stack1 from stack
int m;                     // stored in "stack_data1"

int main() {
}

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

Данные, предоставленные с использованием директивы pragma bss_seg, не сохраняют никакой информации о своем расположении.

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

См. также

Ссылки

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