section
Crée une section dans un fichier .obj.
#pragma section( "section-name" [, attributes] )
Notes
Les termes segment et section sont interchangeables dans cette rubrique.
Une fois qu'une section est définie, elle reste valide pour le reste de la compilation. Toutefois, vous devez utiliser __declspec(allocate), sinon aucun élément ne sera placé dans la section.
section-name est un paramètre obligatoire qui représente le nom de la section. Ce nom ne doit pas être en conflit avec les noms de section standard. Consultez /SECTION pour obtenir la liste des noms à ne pas utiliser lorsque vous créez une section.
attributes est un paramètre optionnel qui se compose d'un ou plusieurs attributs séparés par des virgules que vous souhaitez assigner à la section. Les paramètres attributes possibles sont les suivants :
read (lecture)
Permet les opérations de lecture sur les données.write (écriture)
Permet les opérations d'écriture sur les données.execute
Permet d'exécuter le code.shared
Partage la section entre tous les processus qui chargent l'image.nopage
Marque la section comme non paginable ; utile pour les pilotes de périphériques Win32.nocache
Marque la section comme ne pouvant pas être mise en cache ; utile pour les pilotes de périphériques Win32.discard
Marque la section comme ne pouvant pas être supprimée ; utile pour les pilotes de périphériques Win32.remove
Marque la section comme non résidante en mémoire ; pilotes de périphériques virtuels (VxD) uniquement.
Si vous ne spécifiez aucun attribut, la section aura des attributs en lecture et en écriture.
Exemple
Dans l'exemple suivant, la première instruction identifie la section et ses attributs. L'entier j n'est pas placé dans mysec car il n'a pas été déclaré avec __declspec(allocate) ; j est placé dans la section de données. L'entier i n'est pas placé dans mysec en raison de son attribut de classe de stockage __declspec(allocate).
// pragma_section.cpp
#pragma section("mysec",read,write)
int j = 0;
__declspec(allocate("mysec"))
int i = 0;
int main(){}