Hilfe: was sind vorcompilierter Header?

#1054972
Lesenswert?

> Datum: 21.11.2008 17:25

> Datum: 21.11.2008 17:40

Wir haben es heute eilig...

Nun ja. Kann mich meinen Vorrednern aber sonst soweit nur anschließen. 
Ansonsten ist auch die Suchmaschine mit dem großen "G" recht hilfreich. 
z.B.:

http://www.google.de/search?hl=de&q=vorkompilierte+header&btnG=Google-Suche&meta=

Um mal den Einleitungssatz des ersten Treffers zu zitieren: "In diesem 
Artikel werde ich erklären, was vorkompilierte Header in Visual C++ sind 
und wie man sie benutzt."

Schönen Abend noch.
TommyS
#1055025
Lesenswert?

In visual c++ haben diese dateien die endung *.pch...
Wozuz sie gut sein sollen weiß ich auch nicht. Bei mir trat der Fehler 
immer auf, wenn bei so einem von einem Wizard erzeugten Projekt die 
stdafx.h und die stdafx.c gelöscht hat. Hat man die restliche Dateien 
dann aber einem leeren Projekt hinzugefügt, kompilierte er dies ganz 
normal. Naja die Experten bei MS werden schon wissen was sie machen. 
habe mal gehört, die Hälfte der ursprünglichen Win95-Entwickler ist 
früher oder später im Irrenhaus gelandet...
Moderator Persönliche Seite #1055540
Lesenswert?

Björn R. wrote:

> Wozuz sie gut sein sollen weiß ich auch nicht.

Vermutlich insbesondere bei C++, damit man das teilweise recht
aufwändige Parsen all der Deklarationen in den Headern nicht immer
wieder aufs Neue machen muss.  Vor allem bei Bloatware kommen da
sicher schnell einige hundert Headers pro C++-Quelldatei (also pro
`translation unit') zusammen.  Wenn der Compiler nun für alle
System-Headers (also alles, was mit #include <> arbeitet statt mit
#include "") zuerst nach einer vorcompilierten Datei sucht, in der
er die Deklarationen bspw. als 1:1-Speicherabzug des Syntaxbaums
abgelegt hat, kann man das Compilieren sicher beschleunigen.
Persönliche Seite #1055552
Lesenswert?

Jörg hat das ganz gut beschrieben. Arbeitet man mit sehr großen 
Klassenbibliotheken --GUI-Frameworks sind schöne Beispiele dafür--, dann 
kann die Verwendung präcompilierter Headerdateien die Übersetzungszeiten 
recht erheblich beschleunigen (außer natürlich den allerersten 
Durchlauf).

Wenn man Windows-Applikationen erstellt, dann kann das sogar bei reinen 
C-Programmen, die nur die Win32-API nutzen, etwas bringen, ist doch das 
Windows-SDK derart strukturiert, daß ein #include <windows.h> alles ist, 
was man einbinden muss, damit zigtausende Definitionen etc. bekannt 
sind. Da das jedesmal dasselbe ist, kann man durch Abspeichern des 
"vorverdauten Krempels" einiges an Zeit einsparen.

Bei MFC-Anwendungen wird standardmäßig in alle Übersetzungseinheiten 
eine "stdafx.h" eingebunden, die als präcompilierte Headerdatei 
verwendet wird. Alles, was zusätzlich zur MFC von mehreren/allen 
Übersetzungseinheiten benötigt wird, sollte daher in dieser Datei 
definiert/eingebunden werden. So bekommt man trotz MFC erträgliche 
Übersetzungszeiten auch bei einem "build all".

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren