Verwenden einer externen Vorlage zur Optimierung der Vorlageninstanziierung
In C 11 ist die externe Vorlage ein leistungsstarkes Schlüsselwort, das verwendet werden kann, um eine redundante Instanziierung von zu vermeiden Vorlagen, insbesondere wenn mehrere Übersetzungseinheiten (z. B. CPP-Dateien) möglicherweise dieselbe Header-Datei enthalten, die die Vorlage enthält Definitionen.
Konzept der externen Vorlage
Die externe Vorlage informiert den Compiler im Wesentlichen darüber, dass die aktuelle Übersetzungseinheit eine bestimmte Vorlage nicht instanziieren soll, auch wenn sie im Eingebundenen deklariert ist Kopfzeile. Dies ist nützlich, wenn Sie wissen, dass die Vorlage in einer anderen Übersetzungseinheit desselben Projekts instanziiert wird.
Verwendung für Funktionsvorlagen
Für Funktionsvorlagen eine externe Die Vorlagendeklaration kann wie folgt verwendet werden:
#include "header.h" extern template void f<T>(); // Avoid instantiation in this translation unit
Dies gibt an, dass die f-Vorlage an anderer Stelle im Projekt definiert wird und nicht instanziiert werden sollte aktuelle Datei.
Verwendung für Klassenvorlagen
Ähnlich hat eine externe Vorlagendeklaration für Klassenvorlagen die folgende Form:
#include "header.h" extern template class foo<int>; // Avoid instantiation in this translation unit
Dies stellt sicher, dass die Foo-Vorlagenklasse nicht in dieser bestimmten Übersetzungseinheit instanziiert wird.
Optimierung Anwendungen
Stellen Sie sich das folgende Szenario vor:
// header.h template<typename T> void f();
// source1.cpp #include "header.h" void f<int>();
// source2.cpp #include "header.h" void f<string>();
Ohne externe Vorlage instanziieren sowohl source1.cpp als auch source2.cpp die f-Vorlage, was zu führt mehrere Definitionen und verschwendete Kompilierungszeit. Durch die Verwendung einer externen Vorlage in einer der Dateien vermeiden wir diese Redundanz:
// source1.cpp #include "header.h" void f<int>();
// source2.cpp #include "header.h" extern template void f<int>(); void f<string>();
Wichtige Punkte
Das obige ist der detaillierte Inhalt vonWie können externe Vorlagen die Vorlageninstanziierung in C optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!