Voir le code instancié des modèles C
En C, il peut être avantageux d'examiner le code généré par le compilateur pour une fonction ou une classe modèles. Par exemple, considérons le modèle suivant :
<code class="cpp">template <class T> T add(T a, T b) { return a + b; }</code>
Lorsqu'il est invoqué avec un type spécifique, tel que add
Options du compilateur pour obtenir une visibilité
Une façon d'y parvenir est d'utiliser l'option -Xclang -ast-print -fsyntax-only avec Clang. Cette option demande au compilateur d'imprimer l'arbre de syntaxe abstraite (AST) du modèle instancié.
Exemple d'utilisation
Créons un fichier de test nommé test.cpp contenant le code suivant :
<code class="cpp">template <class T> T add(T a, T b) { return a + b; } void tmp() { add<int>(10, 2); }</code>
Pour voir le code instancié pour la spécialisation int, exécutez la commande suivante :
$ clang++ -Xclang -ast-print -fsyntax-only test.cpp
Sortie Clang
Pour Clang version 5.0 ou ultérieure, le résultat ressemblera à ceci :
template <class T> T add(T a, T b) { return a + b; } template<> int add<int>(int a, int b) { return a + b; } void tmp() { add<int>(10, 2); }
Cette sortie affiche le modèle d'origine, suivi du module complémentaire spécialisé
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!