data_seg
pragma
Spécifie la section de données (segment) dans laquelle les variables initialisées sont stockées dans le fichier objet (.obj).
Syntaxe
#pragma data_seg(
[ « section-name » [,
« section-class » ] ])
#pragma data_seg(
{push
|pop
} [,
identificateur ] [,
« section-name » [,
« section-class » ] ])
Paramètres
push
(Facultatif) Place un enregistrement sur la pile du compilateur interne. A push
peut avoir un identificateur et un nom de section.
pop
(Facultatif) Supprime un enregistrement du haut de la pile du compilateur interne. A pop
peut avoir un identificateur et un nom de section. Vous pouvez afficher plusieurs enregistrements à l’aide d’une pop
seule commande à l’aide de l’identificateur. Le nom de la section devient le nom de la section de données active après la fenêtre contextuelle.
identifier
(Facultatif) Lorsqu’il est utilisé avec push
, attribue un nom à l’enregistrement sur la pile du compilateur interne. Lorsqu’il est utilisé avec pop
, affiche les enregistrements hors de la pile interne jusqu’à ce que l’identificateur soit supprimé. Si l’identificateur n’est pas trouvé sur la pile interne, rien n’est dépilé.
l’identificateur permet à plusieurs enregistrements d’être dépilés avec une seule pop
commande.
« section-name »
(Facultatif) Nom d’une section. Lorsqu’elle est utilisée avec pop
, la pile est dépilée et le nom de section devient le nom de la section de données active.
« section-class »
(Facultatif) Ignoré, mais inclus pour la compatibilité avec les versions de Microsoft C++ antérieures à la version 2.0.
Notes
Une section d’un fichier objet est un bloc nommé de données chargées en mémoire en tant qu’unité. Une section de données est une section qui contient des données initialisées. Dans cet article, les termes segment et section ont la même signification.
La section par défaut du fichier .obj pour les variables initialisées est .data
. Les variables non initialisées sont considérées comme initialisées à zéro et stockées dans .bss
.
La data_seg
pragma directive indique au compilateur de placer tous les éléments de données initialisés de l’unité de traduction dans une section de données nommée section-name. Par défaut, la section de données utilisée pour les données initialisées dans un fichier objet est nommée .data
. Les variables non initialisées sont considérées comme initialisées à zéro et stockées dans .bss
. Une data_seg
pragma directive sans paramètre de nom de section réinitialise le nom de la section de données pour les éléments de données initialisés suivants sur .data
.
Les données allouées à l’aide data_seg
de ne conservent aucune information sur son emplacement.
Pour obtenir la liste des noms qui ne doivent pas être utilisés pour créer une section, consultez /SECTION
.
Vous pouvez également spécifier des sections pour les variables const (const_seg
), les données non initialisées (bss_seg
) et les fonctions (code_seg
).
Vous pouvez utiliser l’application DUMPBIN.EXE pour afficher les fichiers objet. Les versions de DUMPBIN pour chaque architecture cible prise en charge sont incluses avec Visual Studio.
Exemple
// 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() {
}