Frage

Ich habe ein Beispielprojekt (nicht meins), das sich in Visual C ++ 6 befindet. Ich versuche es in Visual Studio 2008 umzuwandeln.

Das ältere Projekt verwendet vorkompilierte Header. Jetzt sind die Fragen:

  1. Was sind vorkompilierte Header?

  2. Da das ältere Projekt vorkompilierte Header verwendet. Ich werde sie auch in Visual Studio 2008 (dem neuen Projekt) verwenden. Aber ich bekomme Fehler, das sagen "Haben Sie vergessen, stdafx.h einzubeziehen", Um das Problem zu beheben, füge ich "stdafx.h" in jede Quelldatei ein. Das hat perfekt funktioniert. Aber das ältere Projekt enthielt nicht "stdafx.h" in jeder Datei? Wie kann ich dann "stdafx.h" in jede Quelldatei einbeziehen? Da nicht jede Quelldatei die in "stdafx.h" definierten Dateien benötigt, tun es nur wenige. Wie wird das gemacht?

BEARBEITEN: Wie kann ich einige Dateien von der Verwendung des vorkompilierten Headers ausgeben?

War es hilfreich?

Lösung

Was sind vorkompilierte Header?

Oft enthalten C ++ - Quelldateien Header aus externen Bibliotheken. In Windows geben Sie ein windows.h. Diese Header -Dateien können sehr groß sein und es dauert einige Zeit, bis sie verarbeitet werden. Jedes Mal, wenn Sie eine C ++ - Datei kompilieren, muss der Compiler Tausende von Zeilen aus diesen Header -Dateien lesen und verarbeiten. Externe Bibliotheken ändern sich jedoch nicht und Sie können viel Zeit sparen, wenn Sie diese Dateien nur einmal verarbeiten und das Ergebnis speichern.

Ein vorkompilierter Header ist einfach eine Reihe von Header -Dateien, die in eine Zwischenform verarbeitet wurden, die später immer wieder vom Compiler verwendet werden kann.

Vorkompilierte Header in visueller C ++

In visueller C ++ ist es üblich zu #include Alle Ihre nicht nachgiebigen Header-Dateien in stdafx.h. Anschließend weist Sie den Compiler an, den vorkompilierten Header zu erstellen stdafx.pch beim Kompilieren stdafx.cpp Was nur einbezieht stdafx.h. Wenn Sie den vorkompilierten Header in einem anderen verwenden möchten .cpp Datei, die Sie einschließen müssen stdafx.h Als erste umfassende Datei und den Compiler anweisen, den Compiler zu verwenden stdafx.pch Für Ihren vorkompilierten Kopfball.

Wenn Sie einen Fehler erhalten, um nicht einzubeziehen stdafx.h Sie müssen den Compiler lediglich anweisen, für diese bestimmte Quelldatei keinen vorkompilierten Header zu verwenden. (Oder Sie können einschließen stdafx.h.)

Vorkompilierte Headereinstellungen für einzelne Quelldateien

Mit Visual C ++ können Sie die Compiler -Einstellungen für das gesamte Projekt und für einzelne Dateien steuern. Um auf individuelle Eigenschaften zuzugreifen, wählen Sie die Quelldatei im Lösungs -Explorer aus. Klicken Sie mit der rechten Maustaste und wählen Sie darauf und wählen Sie Eigenschaften Aus dem Kontextmenü. Die Optionen für vorkompilierte Header finden Sie bei Konfigurationseigenschaften => C/C ++ => Vorkompilierte Header. Wenn Sie diese Einstellungen ändern, möchten Sie dies häufig für alle Konfigurationen (z. Debuggen und Veröffentlichung).

Wenn Sie vorkompilierte Header verwenden, haben Sie eine Einstellung für das gesamte Projekt, das den Compiler zur Verwendung anweist stdafx.pch Für den vorkompilierten Kopfball. Das stdafx.cpp Wird eine individuelle Einstellungen haben, die den Compiler anweist, generieren stdafx.pch, und wenn Sie einige Quelldateien haben, die nicht enthalten stdafx.h Sie können individuelle Einstellungen auf diese festlegen, um keine vorkompilierten Header zu verwenden.

Andere Tipps

Wenn Sie Code kompilieren, muss der Compiler in allen #Included Headers nachsehen, wie Sie den Code in Ihrer .cpp -Datei kompilieren können.

Bei großen Projekten (oder solchen, die Bibliotheken wie MFC) können, können diese Header enorm werden und es dauert daher lange, bis sie zusammengestellt werden.

Da sich die meisten dieser Header nicht so oft (wenn überhaupt) ändern, können Sie den Compiler dazu bringen, sie zu "vorkompilieren" - er verarbeitet sie und rettet seinen Zustand in einen vorkompilierten Kopfball. Wenn es das nächste Mal kompiliert, muss es nicht alle diese Header wieder lesen und zusammenstellen, sodass es viel schneller ist.

Eine Anforderung in Visual Studio ist, dass bei Verwendung eines vorkompilierten Headers sie in jeder Datei im Projekt aufgenommen werden muss.

Wenn das Projekt klein ist oder Sie es nicht oft erstellen, können Sie einfach die Option "vorkompilierter Header" deaktivieren (in den Projekteinstellungen. Dies gilt für die ganz Projekt). Der einzige Effekt, den Sie erhalten, ist, dass es langsamer kompiliert werden kann. Oder lassen Sie die Option aktiviert und fügen Sie einfach #include "stdafx.h" wie die erste in jeder Datei hinzu.

  1. Sehen Msdn
  2. Normalerweise. Sie müssen "stdafx.h" in jede CPP -Datei aufnehmen. Der springende Punkt ist, dass sie vorkompiliert sind und Sie sich keine Sorgen machen müssen, dass nicht alle in einer konkreten Datei verwendet werden.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top