code_seg
pragma
Spécifie la section de texte (segment) dans laquelle les fonctions sont stockées dans le fichier objet (.obj).
Syntaxe
#pragma code_seg(
[ « section-name » [,
« section-class » ] ])
#pragma code_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 texte 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’elle est utilisée avec pop
, la directive affiche les enregistrements 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é.
« 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 texte 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 texte est une section qui contient du code exécutable. Dans cet article, les termes segment et section ont la même signification.
La code_seg
pragma directive indique au compilateur de placer tout le code objet suivant de l’unité de traduction dans une section de texte nommée section-name. Par défaut, la section de texte utilisée pour les fonctions dans un fichier objet est nommée .text
. Une code_seg
pragma directive sans paramètre de nom de section réinitialise le nom de la section de texte pour le code .text
objet suivant sur .
La code_seg
pragma directive ne contrôle pas l’emplacement du code objet généré pour les modèles instanciés. Il ne contrôle pas non plus le code généré implicitement par le compilateur, comme les fonctions membres spéciales. Pour contrôler ce code, nous vous recommandons d’utiliser l’attribut à la __declspec(code_seg(...))
place. Il vous permet de contrôler le positionnement de tout le code objet, y compris le code généré par le compilateur.
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 données initialisées (data_seg
), les données non initialisées (bss_seg
) et les variables const (const_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
Cet exemple montre comment utiliser la directive code_segpragma pour contrôler où le code objet est placé :
// pragma_directive_code_seg.cpp
void func1() { // stored in .text
}
#pragma code_seg(".my_data1")
void func2() { // stored in my_data1
}
#pragma code_seg(push, r1, ".my_data2")
void func3() { // stored in my_data2
}
#pragma code_seg(pop, r1) // stored in my_data1
void func4() {
}
int main() {
}
Voir aussi
code_seg (__declspec)
Pragma directives et mots __pragma
_Pragma
clés