code_seg
pragma
Указывает текстовый раздел (сегмент), где функции хранятся в файле объекта (OBJ).
Синтаксис
#pragma code_seg(
[ "section-name" [,
"section-class" ])
#pragma code_seg(
{ }push
pop
| [,
идентификатор ] [,
"section-name" [,
"section-class" ])
Параметры
push
(Необязательно) Помещает запись во внутренний стек компилятора. Может push
иметь идентификатор и имя раздела.
pop
(Необязательно) Удаляет запись из верхней части внутреннего стека компилятора. Может pop
иметь идентификатор и имя раздела. Вы можете отображать несколько записей, используя только одну pop
команду с помощью идентификатора. Имя раздела становится активным именем текстового раздела после всплывающего окна.
идентификатор
(Необязательно) При использовании с push
именем назначается запись во внутреннем стеке компилятора. При использовании с pop
директивой появляется запись из внутреннего стека, пока не будет удален идентификатор . Если идентификатор не найден во внутреннем стеке, ничего не отображается.
"section-name"
(Необязательно) Имя раздела. При использовании стека pop
отображается, а имя раздела становится активным именем текстового раздела.
"section-class"
(Необязательно) Игнорируется, но включена для совместимости с версиями Microsoft C++ более ранней версии 2.0.
Замечания
Раздел в файле объекта — это именованный блок данных, загруженных в память в виде единицы. Текстовый раздел — это раздел , содержащий исполняемый код. В этой статье сегмент терминов и раздел имеют то же значение.
Директива code_seg
pragma сообщает компилятору поместить весь последующий код объекта из единицы перевода в текстовый раздел с именем section-name. По умолчанию текстовый раздел, используемый для функций в файле объектов, называется .text
. Директива code_seg
pragma без параметра section-name сбрасывает имя текстового раздела для последующего кода .text
объекта.
Директива code_seg
pragma не управляет размещением кода объекта, созданного для экземпляров шаблонов. Не управляет кодом, созданным неявно компилятором, например специальными функциями-членами. Для управления этим кодом рекомендуется использовать __declspec(code_seg(...))
атрибут. Он обеспечивает контроль над размещением всего кода объекта, включая созданный компилятором код.
Список имен, которые не должны использоваться для создания раздела, см. в разделе /SECTION
.
Можно также указать разделы для инициализированных данных (), неинициализированных данных (data_seg
bss_seg
) и константных переменных (const_seg
).
Приложение DUMPBIN.EXE можно использовать для просмотра файлов объектов. Версии DUMPBIN для каждой поддерживаемой целевой архитектуры включены в Visual Studio.
Пример
В этом примере показано, как использовать директиву code_segpragma для управления размещением кода объекта:
// pragma_directive_code_seg.cpp
void func1() { // stored in .text
}
#pragma code_seg(".my_data1")
void func2() { // stored in my_data1
}
#pragma code_seg(push, r1, ".my_data2")
void func3() { // stored in my_data2
}
#pragma code_seg(pop, r1) // stored in my_data1
void func4() {
}
int main() {
}
См. также
code_seg (__declspec)
Директивы Pragma и __pragma
_Pragma
ключевое слово
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по