Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Megadja azt az adatszakaszt (szegmenst), ahol az inicializált változók az objektumfájlban (.obj) vannak tárolva.
Szintaxis
#pragma data_seg([ "szakasznév" [,"szakaszosztály" ] ] ])
#pragma data_seg({push|pop} [,azonosító ] [,"szakasznév" [,"szakaszosztály" ] ] ])
Paraméterek
push
(Nem kötelező) Rekordot helyez el a belső fordítóveremen. Egy push rendelkezhet azonosítóval és szakasznév.
pop
(Nem kötelező) Eltávolít egy rekordot a belső fordítóverem tetejéről. Egy pop rendelkezhet azonosítóval és szakasznév. A azonosítóhasználatával több rekordot is előugrathat egyetlen pop paranccsal. A szakasznév lesz az aktív adatszakasz neve a pop után.
azonosító
(Nem kötelező) Ha pushhasznál, a belső fordítóverem rekordjának nevét rendeli hozzá. Ha pophasznál, a rendszer a belső veremről rögzíti a rekordokat, amíg el nem távolítja azonosító. Ha azonosító nem található a belső veremen, a rendszer semmit sem talál.
azonosító lehetővé teszi több rekord egyetlen pop paranccsal való megjelenítését.
"szakasznév"
(Nem kötelező) Egy szakasz neve. A pophasználatakor a verem megjelenik, és szakasznév lesz az aktív adatszakasz neve.
"szakaszosztály"
(Nem kötelező) Figyelmen kívül hagyja, de a Microsoft C++ 2.0-s verziónál korábbi verzióival való kompatibilitás érdekében tartalmazza.
Megjegyzések
Egy objektumfájl szakasza egy elnevezett adatblokk, amely egységként töltődik be a memóriába. A adatszakasz inicializált adatokat tartalmazó szakasz. Ebben a cikkben a szegmensek és szakasz azonos jelentéssel rendelkeznek.
Az inicializált változók .obj fájljának alapértelmezett szakasza a .data. A nem inicializált változók nullára inicializáltnak minősülnek, és .bsstárolja őket.
A data_segpragma irányelv arra utasítja a fordítót, hogy a fordítási egységből származó összes inicializált adatelemet egy szakasznévnevű adatszakaszba helyezze. Alapértelmezés szerint az objektumfájlban az inicializált adatokhoz használt adatszakasz neve .data. A nem inicializált változókat nullára inicializáltnak tekintjük, és .bsstárolja őket. A szakasznév nélküli data_segpragma-irányelv paraméter alaphelyzetbe állítja a következő inicializált adatelemek adatszakasznevét .data.
A data_seg használatával lefoglalt adatok nem őrzik meg a helyével kapcsolatos információkat.
A szakasz létrehozásához nem használható nevek listáját a /SECTIONcímű témakörben találja.
A const változók (const_seg), az nem inicializált adatok (bss_seg) és a függvények (code_seg) szakaszait is megadhatja.
Az DUMPBIN.EXE alkalmazással megtekintheti az objektumfájlokat. Az egyes támogatott célarchitektúrákHOZ tartozó DUMPBIN-verziók a Visual Studio részét képezik.
Példa
// 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() {
}
Lásd még:
Pragma irányelvei, valamint a __pragma és _Pragma kulcsszavak