Partager via


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_memberspragma fichier source comme alternative à l’utilisation des /vmb options de compilateur ou /vmg/vmm, /vmv /vmsdes 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. Utilisez full_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’argument most-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 de best_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_memberspragma 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

Voir aussi

Pragma directives et mots __pragma _Pragma clés