Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Určuje oddíl (segment), kde jsou proměnné const uloženy v souboru objektu (.obj).
Syntaxe
#pragma const_seg([ "section-name" [,"section-class" ] ])
#pragma const_seg({push|pop} [,identifikátor ] [,"section-name" [,"section-class" ] ])
Parametry
push
(Volitelné) Vloží záznam do zásobníku interního kompilátoru. A push může mít identifikátor a název oddílu.
pop
(Volitelné) Odebere záznam z horní části interního zásobníku kompilátoru. A pop může mít identifikátor a název oddílu. Pomocí identifikátoru popmůžete zobrazit více záznamů pouze jedním příkazem. Název oddílu se stane aktivním názvem oddílu const za místním oknu.
identifikátor
(Volitelné) Při použití se pushzáznamem v interním zásobníku kompilátoru přiřadí název záznamu. Při použití popse direktivou vyskočí záznamy z interního zásobníku, dokud se identifikátor neodebere. Pokud se v interním zásobníku nenajde identifikátor , nic se nevypíná.
"section-name"
(Volitelné) Název oddílu. Při použití popse zásobník zobrazí a název oddílu se změní na název aktivního oddílu const.
"section-class"
(Volitelné) Ignorováno, ale je součástí kompatibility s verzemi Microsoft C++ staršími než verze 2.0.
Poznámky
Oddíl v souboru objektu je pojmenovaný blok dat načtených do paměti jako jednotka. Oddíl const je oddíl , který obsahuje konstantní data. V tomto článku mají segment termínů a oddíl stejný význam.
Direktiva const_segpragma kompilátoru říká, aby všechny konstantní datové položky z jednotky překladu umístil do oddílu const s názvem section-name. Výchozí oddíl v souboru objektu pro const proměnné je .rdata. Některé const proměnné, jako jsou skaláry, jsou automaticky vloženy do datového proudu kódu. Vložený kód se nezobrazuje v .rdatasouboru . Direktiva const_segpragma bez parametru section-name resetuje název oddílu pro následné const datové položky na .rdata.
Pokud definujete objekt, který vyžaduje dynamickou inicializaci v objektu const_seg, výsledek je nedefinované chování.
Seznam názvů, které by se neměly používat k vytvoření oddílu, najdete v tématu /SECTION.
Můžete také zadat oddíly pro inicializovaná data (data_seg), neinicializovaná data (bss_seg) a funkce (code_seg).
K zobrazení souborů objektů můžete použít DUMPBIN.EXE aplikaci. Verze DUMPBIN pro každou podporovanou cílovou architekturu jsou součástí sady Visual Studio.
Příklad
// pragma_directive_const_seg.cpp
// compile with: /EHsc
#include <iostream>
const int i = 7; // inlined, not stored in .rdata
const char sz1[]= "test1"; // stored in .rdata
#pragma const_seg(".my_data1")
const char sz2[]= "test2"; // stored in .my_data1
#pragma const_seg(push, stack1, ".my_data2")
const char sz3[]= "test3"; // stored in .my_data2
#pragma const_seg(pop, stack1) // pop stack1 from stack
const char sz4[]= "test4"; // stored in .my_data1
int main() {
using namespace std;
// const data must be referenced to be put in .obj
cout << sz1 << endl;
cout << sz2 << endl;
cout << sz3 << endl;
cout << sz4 << endl;
}
test1
test2
test3
test4