pointers_to_members
pragma
Spécifique À C++
Spécifie si un pointeur vers un membre de classe peut être déclaré avant sa définition de classe associée. Utilisé pour contrôler la taille du pointeur et le code requis pour interpréter le pointeur.
Syntaxe
#pragma pointers_to_members( best_case )
#pragma pointers_to_members( full_generality
[,
most-general-representation
])
Notes
Vous pouvez placer un pointers_to_members
pragma fichier source comme alternative à l’utilisation des /vmb
options de compilateur ou /vmg
/vmm
, /vmv
/vms
des options du compilateur ou des mots clés d’héritage spécifiques à Microsoft.
L’argument de déclaration de pointeur spécifie si vous avez déclaré un pointeur vers un membre avant ou après la définition de fonction associée. L’argument pointer-declaration
est l’un des deux symboles suivants :
full_generality
Génère un code sécurisé, parfois non optimal. Utilisezfull_generality
si un pointeur vers un membre est déclaré avant la définition de classe associée. Cet argument utilise toujours la représentation de pointeur spécifiée par l’argumentmost-general-representation
. Équivaut à/vmg
.best_case
Génère un code optimal à l’aide de la meilleure représentation de cas pour tous les pointeurs vers les membres. Vous devez définir la classe avant de déclarer un pointeur vers un membre. Par défaut, il s’agit debest_case
.
L’argument most-general-representation
spécifie la représentation de pointeur la plus petite que le compilateur doit utiliser pour référencer en toute sécurité tout pointeur vers un membre d’une classe dans une unité de traduction. L’argument peut être l’une des valeurs suivantes :
single_inheritance
La représentation la plus générale est le pointeur d’héritage unique vers la fonction membre. Équivaut à/vmg /vms
. Provoque une erreur si le modèle d’héritage d’une définition de classe est multiple ou virtuel.multiple_inheritance
La représentation la plus générale est le pointeur d’héritage multiple vers la fonction membre. Équivaut à/vmg /vmm
. Provoque une erreur si le modèle d’héritage d’une définition de classe est virtuel.virtual_inheritance
La représentation la plus générale est le pointeur d’héritage virtuel vers la fonction membre. Équivaut à/vmg /vmv
. Ne génère jamais d'erreur.virtual_inheritance
est l’argument par défaut quand#pragma pointers_to_members(full_generality)
il est utilisé.
Attention
Nous vous conseillons de placer le pointers_to_members
pragma seul fichier de code source que vous souhaitez affecter, et seulement après toutes les #include
directives. Cette pratique réduit le risque que les pragma autres fichiers affectent et que vous spécifiez accidentellement plusieurs définitions pour la même variable, fonction ou nom de classe.
Exemple
// Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )
FIN C++ Spécifique