Heim > Backend-Entwicklung > C++ > Wie kann ich den instanziierten Code von C-Vorlagen anzeigen?

Wie kann ich den instanziierten Code von C-Vorlagen anzeigen?

Linda Hamilton
Freigeben: 2024-10-27 15:53:29
Original
273 Leute haben es durchsucht

How to View the Instantiated Code of C   Templates?

Den instanziierten Code von C-Vorlagen anzeigen

In C kann es hilfreich sein, den vom Compiler generierten Code auf Funktion oder Klasse zu untersuchen Vorlagen. Betrachten Sie beispielsweise die folgende Vorlage:

<code class="cpp">template <class T> T add(T a, T b) {
    return a + b;
}</code>
Nach dem Login kopieren

Beim Aufruf mit einem bestimmten Typ, z. B. add(10, 2), möchten wir möglicherweise die Funktion anzeigen, die der Compiler für diesen bestimmten Typ erstellt Spezialisierung.

Compiler-Optionen zur Erzielung von Sichtbarkeit

Eine Möglichkeit, dies zu erreichen, ist die Verwendung der Option -Xclang -ast-print -fsyntax-only mit Clang. Diese Option weist den Compiler an, den abstrakten Syntaxbaum (AST) der instanziierten Vorlage zu drucken.

Beispielverwendung

Erstellen wir eine Testdatei mit dem Namen test.cpp, die Folgendes enthält Folgender Code:

<code class="cpp">template <class T> T add(T a, T b) {
    return a + b;
}

void tmp() {
    add<int>(10, 2);
}</code>
Nach dem Login kopieren

Um den instanziierten Code für die int-Spezialisierung anzuzeigen, führen Sie den folgenden Befehl aus:

$ clang++ -Xclang -ast-print -fsyntax-only test.cpp
Nach dem Login kopieren

Clang-Ausgabe

Für Clang Version 5.0 oder höher sieht die Ausgabe so aus:

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);
}
Nach dem Login kopieren

Diese Ausgabe zeigt die Originalvorlage, gefolgt vom speziellen Add Funktion, die der Compiler instanziiert hat.

Das obige ist der detaillierte Inhalt vonWie kann ich den instanziierten Code von C-Vorlagen anzeigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage