Heim >Backend-Entwicklung >C++ >Wie kann eine „externe Vorlage' die Instanziierung redundanter Vorlagen in C verhindern?
Verwendung externer Vorlagen zur Vermeidung der Vorlageninstanziierung
Die Vorlageninstanziierung ist ein entscheidender Schritt in der C-Programmierung, bei der bestimmte Vorlageninstanzen zur Kompilierungszeit erstellt werden . In bestimmten Szenarien ist es notwendig, die Vorlageninstanziierung zu steuern, um die Kompilierungszeit zu optimieren und redundante Definitionen zu vermeiden. Hier kommt das Schlüsselwort „extern template“ ins Spiel.
Externe Vorlagen für Funktionsvorlagen
Bei Verwendung mit Funktionsvorlagen weist die externe Vorlage den Compiler an, das angegebene nicht zu instanziieren Vorlage innerhalb der aktuellen Übersetzungseinheit. Es signalisiert, dass eine Instanziierung dieser Vorlage an anderer Stelle im Programm gefunden wird. Dies ist besonders nützlich in Szenarien, in denen mehrere Quelldateien dieselbe Vorlage mit identischen Parametern instanziieren, was zu mehreren Definitionen führt, die der Compiler verwerfen muss.
Beispiel:
Bedenken Sie das Folgender Codeausschnitt:
// header.h template <typename T> void f() { /* Body */} // source1.cpp #include "header.h" void something1() { f<int>(); } // source2.cpp #include "header.h" extern template void f<int>(); void something2() { f<int>(); }
In diesem Fall informiert die externe Vorlage in source2.cpp den Compiler darüber, dass die f
Externe Vorlagen für Klassenvorlagen
Ähnlich wie Funktionsvorlagen können auch externe Vorlagen verwendet werden mit Klassenvorlagen. Dies geschieht, um mehrere Instanziierungen von Vorlagenklassen mit denselben Parametern zu vermeiden.
Beispiel:
// header.h template <typename T> class MyClass { /* Body */} // source1.cpp #include "header.h" MyClass<int> obj1; // source2.cpp #include "header.h" extern template class MyClass<int>; MyClass<int> obj2;
Hier stellt die externe Vorlage in source2.cpp sicher, dass die MyClass
Richtlinien für die Verwendung externer Vorlagen
Das obige ist der detaillierte Inhalt vonWie kann eine „externe Vorlage' die Instanziierung redundanter Vorlagen in C verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!