Überblick zu vorcompilierten Headern

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Compilieren, Build erstellen und Anwendungen ausführen - Index

Die Verwendung von vorcompilierten Headern für Ihre C++-Projekte bietet einige Vorteile, aber es gibt auch Fehlerquellen, die dabei vermieden werden müssen.

Vorteile von vorcompilierten Headern

Das Erstellen und Verwenden von vorcompilierten Headern bietet die beiden folgenden Hauptvorteile:

  • Reduzieren der Compilierungsdauer für C++-Dateien.
  • Reduzieren der Anzahl der Codezeilen, die der Compiler verarbeiten muss (in manchen Fällen in einer signifikanten Größenordnung).

Zu vermeidende Fehlerquellen

Wenn vorcompilierte Header unüberlegt verwendet werden, können sie die Compilierungsdauer verlängern. Achten Sie auf die folgenden potenziellen Fehlerquellen:

  • Einfache Compilierungs-Units, die auf sehr wenige Symbole verweisen, werden ohne vorcompilierte Header evtl. schneller compiliert. Wenn dafür vorcompilierte Header verwendet werden, könnte die Compilierung langsamer werden.
  • Wenn ein Header, der sich regelmäßig ändert, Bestandteil des vorcompilierten Headers ist, könnte der Aufwand, den vorcompilierten Header ständig neu zu erstellen, die Vorteile des Einsatzes des vorcompilierten Headers zunichte machen.
  • Bei sehr großen vorcompilierten Headern könnte der für das Lesen oder Aktualisieren der Datei benötigte E/A-Aufwand die Vorteile von vorcompilierten Headern zunichte machen.

Einige Header sollten nicht in vorcompilierte Header aufgenommen werden. Anhand der folgenden Richtlinien können Sie feststellen, welche Header vorcompiliert werden sollten.

Beziehen Sie die folgenden Header-Typen nicht in vorcompilierte Header ein:

  • Alle Header, die noch nicht richtig überwacht werden (Guard). Das sind Header-Dateien, die keine Präprozessorbedingungen (#define) enthalten, die sicherstellen würden, dass der Header nur einmal vom Compiler verarbeitet wird, auch wenn er mehrfach einbezogen ist.
  • Ein Header, dessen Code von bestimmten Makros abhängig ist, die nur wenige Compilierungs-Units definieren.
  • Alle Header, die häufig oder regelmäßig geändert werden.
  • Alle Header, die Daten enthalten. Der Compiler erzeugt eine Meldung für Header, die Daten enthalten und deshalb kein Bestandteil eines vorcompilierten Headers sein dürfen.

Vorcompilierte Header können inkorrekten Code verbergen. Zum Beispiel könnte eine .cpp-Datei, die einen erforderlichen Header nicht explizit einbezieht, ohne Fehler compiliert werden, wenn ein vorcompilierter Header die fehlende Header-Datei einbezieht, aber fehlschlagen, wenn der vorcompilierte Header deaktiviert wird. Sie sollten gelegentlich Ihr Projekt ohne vorcompilierte Header compilieren, um sicherzustellen, dass Ihr Quelltext alle erforderlichen Header korrekt einbezieht.

Siehe auch