renommer l’attribut d’importation
Spécifique À C++
Offre une solution de contournement pour les problèmes de collisions de noms.
#import type-library rename( « OldName » , « NewName » )
OldName
Ancien nom dans la bibliothèque de types.
NewName
Nom à utiliser au lieu de l'ancien nom.
Lorsque l’attribut de renommage est spécifié, le compilateur remplace toutes les occurrences de OldName dans la bibliothèque de types par le NewName fourni par l’utilisateur dans les fichiers d’en-tête résultants.
L’attribut de renommage peut être utilisé lorsqu’un nom dans la bibliothèque de types coïncide avec une définition de macro dans les fichiers d’en-tête système. Si cette situation n’est pas résolue, le compilateur peut émettre différentes erreurs de syntaxe, telles que l’erreur du compilateur C2059 et l’erreur du compilateur C2061.
Notes
Le remplacement concerne un nom utilisé dans la bibliothèque de types et pas un nom utilisé dans le fichier d'en-tête résultant.
Par exemple, supposons qu'une propriété nommée MyParent
existe dans une bibliothèque de types et qu'une macro GetMyParent
est définie dans un fichier d'en-tête et utilisée avant #import
. Étant GetMyParent
donné que le nom par défaut d’une fonction wrapper pour la propriété de gestion des get
erreurs se produit, une collision de noms se produit. Pour contourner le problème, utilisez l'attribut suivant dans l'instruction #import
:
#import MyTypeLib.tlb rename("MyParent","MyParentX")
ce qui renomme le nom MyParent
dans la bibliothèque de types. Une tentative de changement du nom du wrapper GetMyParent
échoue :
#import MyTypeLib.tlb rename("GetMyParent","GetMyParentX")
Cela est dû au fait que le nom GetMyParent
se produit uniquement dans le fichier d’en-tête de bibliothèque de types résultant.
FIN C++ Spécifique