Maison > développement back-end > C++ > Comment afficher le code instancié des modèles C ?

Comment afficher le code instancié des modèles C ?

Linda Hamilton
Libérer: 2024-10-27 15:53:29
original
292 Les gens l'ont consulté

How to View the Instantiated Code of C   Templates?

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>
Copier après la connexion

Lorsqu'il est invoqué avec un type spécifique, tel que add(10, 2), nous pouvons souhaiter afficher la fonction que le compilateur crée pour ce type particulier. spécialisation.

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>
Copier après la connexion

Pour voir le code instancié pour la spécialisation int, exécutez la commande suivante :

$ clang++ -Xclang -ast-print -fsyntax-only test.cpp
Copier après la connexion

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);
}
Copier après la connexion

Cette sortie affiche le modèle d'origine, suivi du module complémentaire spécialisé fonction que le compilateur a instanciée.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal