Megosztás:


data_seg pragma

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