Frage

Was sind die besten Kandidaten für eine vorkompilierte Header-Datei? Kann ich STL und Boost-Header gibt, auch wenn sie Vorlagen haben? Und reduzieren, dass die Zeiten zusammenstellen? Auch, was sind die besten IDE Einstellungen Kompilierung Zeiten zu reduzieren?

War es hilfreich?

Lösung

Die schnelle Antwort: die STL und Boost-Header in der Tat in der vorkompilierte Header-Datei gehören, obwohl diese Header-Dateien Template-Klassen definieren

.

Wenn Sie eine vorkompilierte Header-Datei zu erzeugen, ein Compiler analysiert den Kopftext (eine bedeutende Aufgabe!), Und wandelt sie in ein binäres Format, das für den Compiler Nutzen optimiert ist.

Auch wenn die Template-Klassen instanziiert werden, wenn andere CPP-Dateien kompiliert werden, werden sie von den Informationen in dem vorkompilierte Header instanziert werden, was wesentlich schneller ist für den Compiler zu lesen.


(später zusätzlich)

Eine Sache, die Sie sollten nicht sind in einem vorkompilierte Header sind Dateien, die Teil des Projekts und werden häufig geändert, auch wenn jeder einzelne CPP-Datei diese Dateien enthält.

Der Grund ist dies - die Erzeugung des vorkompilierte Header eine lange Zeit in Anspruch nehmen kann, weil der Auftrieb, stl und Fenster Bibliotheken sind sehr groß

.

Sie können eine einfache Datei (zB „StringDefs.h“) haben, dass alles verwendet. Wenn StringDefs.h in stdafx.h enthalten ist, und ein Entwickler berührt StringDefs.h, dann hat jeder Entwickler zu warten, bis der gesamte vorkompilierte Header neu kompiliert. Es wäre viel schneller, wenn StringDefs.h aus dem vorkompilierte Header übrig war, und zusammen mit jeder CPP-Datei analysiert.

Andere Tipps

Ein neben Andrew Shepherd Antwort. Verwenden Sie die vorkompilierte Header für Header-Dateien, die zu einem Projekt extern sind, für Dateien, die selten geändert werden. Wenn Sie die Header-Dateien im aktuellen Projekt die ganze Zeit sind zu ändern, ist es wahrscheinlich nicht wert Vorkompilieren sie.

Ich habe einen Artikel über Techniken geschrieben, die die Übersetzungszeit zu reduzieren. Unter diesen Verfahren kann ein Beitrag auf vorkompilierte Header und ihre Anwendung findet hier . Es hat auch einen Abschnitt über Best Practices, die Sie interessant finden. CMake-Skripte, die es transparent handhaben sind enthalten.

alles in dem vorkompilierte Header setzen, die die meisten der CPP-Dateien in diesem Projekt ohnehin würden. Dies gilt für jede Header-Datei, wirklich. Dies ermöglicht es den Compiler diese Dateien einmal, zu analysieren und dann in allen CPP-Dateien im selben Projekt, dass die Informationen wiederverwendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top