data_seg
pragma
Hiermee geeft u de gegevenssectie (segment) op waarin geïnitialiseerde variabelen worden opgeslagen in het objectbestand (.obj).
Syntaxis
#pragma data_seg(
[ "sectienaam" [,
"sectieklasse" ] ])
#pragma data_seg(
{push
|pop
} [,
id ] [,
"sectienaam" [,
"sectieklasse" ] ])
Parameters
push
(Optioneel) Plaatst een record op de interne compilerstack. Een push
kan een id en sectienaamhebben.
pop
(Optioneel) Hiermee verwijdert u een record boven aan de interne compilerstack. Een pop
kan een id en sectienaamhebben. U kunt meerdere records weergeven met slechts één pop
opdracht met behulp van de id. De sectienaam wordt de naam van de actieve gegevenssectie na de pop.
id-
(Optioneel) Wanneer deze wordt gebruikt met push
, wijst u een naam toe aan de record op de interne compilerstack. Wanneer deze wordt gebruikt met pop
, worden records uit de interne stack weergegeven totdat id wordt verwijderd. Als id niet wordt gevonden op de interne stack, wordt er niets weergegeven.
id kunt u meerdere records weergeven met één pop
opdracht.
sectienaam
(Optioneel) De naam van een sectie. Wanneer de stack wordt gebruikt met pop
, wordt de stack weergegeven en wordt sectienaam de naam van de actieve gegevenssectie.
sectieklasse
(Optioneel) Genegeerd, maar opgenomen voor compatibiliteit met versies van Microsoft C++ ouder dan versie 2.0.
Opmerkingen
Een sectie in een objectbestand is een benoemd blok met gegevens dat als eenheid in het geheugen wordt geladen. Een gegevenssectie is een sectie die geïnitialiseerde gegevens bevat. In dit artikel hebben de termen segment en sectie dezelfde betekenis.
De standaardsectie in het .obj-bestand voor geïnitialiseerde variabelen is .data
. Variabelen die niet geïnitialiseerd zijn, worden als nul beschouwd en worden opgeslagen in .bss
.
De data_seg
pragma-instructie vertelt de compiler dat alle geïnitialiseerde gegevensitems uit de vertaaleenheid worden geplaatst in een gegevenssectie met de naam sectienaam. De gegevenssectie die wordt gebruikt voor geïnitialiseerde gegevens in een objectbestand heeft standaard de naam .data
. Variabelen die niet geïnitialiseerd zijn, worden als nul beschouwd en worden opgeslagen in .bss
. Een data_seg
pragma-instructie zonder een sectienaam parameter stelt de naam van de gegevenssectie opnieuw in voor de volgende geïnitialiseerde gegevensitems in .data
.
Gegevens die zijn toegewezen met data_seg
bewaren geen informatie over de locatie.
Zie /SECTION
voor een lijst met namen die niet mogen worden gebruikt om een sectie te maken.
U kunt ook secties opgeven voor const-variabelen (const_seg
), niet-geïnitialiseerde gegevens (bss_seg
) en functies (code_seg
).
U kunt de DUMPBIN.EXE-toepassing gebruiken om objectbestanden weer te geven. Versies van DUMPBIN voor elke ondersteunde doelarchitectuur zijn opgenomen in Visual Studio.
Voorbeeld
// 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() {
}