Wie # windows.h nicht eingeschlossen wird

7

Verwenden von MSVC2008, 32-Bit auf 64-Bit-System.

Mir wurde einmal geraten, windows.h niemals als 'ein echtes Monster' zu verwenden und meine Kompilierungszeiten erheblich zu verlangsamen.

Ich habe versucht, es auszulassen und offensichtlich Kompilierfehler zu bekommen. Ich habe windef.h eingeschlossen, um alle DWORDs usw. zu definieren, aber ich komme schnell wieder los und weiß, was ich noch definieren muss, um den Code kompilieren zu lassen.

Ich bekomme jetzt:

%Vor%

Kann hier jemand den richtigen Ansatz vorschlagen?

Danke

Simon

    
sipi 14.06.2010, 11:22
quelle

4 Antworten

13

Intern respektiert windows.h viele Definitionen, wie NOMINMAX oder WIN32_LEAN_AND_MEAN.

Es reduziert die Zeiten erheblich.

    
Pavel Radzivilovsky 14.06.2010, 11:23
quelle
24

Verwenden Sie vorkompilierte Header, um die Kompilierzeit zu verbessern, und fügen Sie windows.h hinzu.

    
Sjoerd 14.06.2010 11:23
quelle
8

Die richtige Antwort wäre "Include it in the PCH". Vorkompilierte Header reduzieren die Kompilierungszeit dramatisch und entgegen der landläufigen Meinung gilt dies auch für Full Rebuilds.

Wenn Sie mehr als eine CPP-Datei in Ihrem Projekt haben, würde die "Rebuild all" diese einmal für das gesamte Projekt erstellen, das lediglich ein paar Sekunden für die Kompilierung anzeigt - damit windows.h in allen Projekten enthalten ist.

    
Pavel Radzivilovsky 14.06.2010 11:24
quelle
2

Untersuchen Sie die APIs und stellen Sie sicher, dass die Header in der richtigen Reihenfolge enthalten sind. Es ist nicht schwer, Windows.h nicht zu benutzen; aber Sie werden in diesem Prozess etwas über die MS-Header erfahren.

Es gibt ein paar Header, die Sie beachten müssen:

%Vor%     
TemporalBeing 05.03.2012 15:32
quelle

Tags und Links