2010-06-14 8 views
7

Używanie MSVC2008, 32-bitowy system 64-bitowy.Jak nie #include <windows.h>

Poinformowano mnie, że nigdy nie należy włączać windows.h jako "prawdziwego potwora i znacznie spowolnić czas kompilacji".

Próbowałem go opuścić i oczywiście dostaję błędy kompilacji. Zawarłem windef.h, aby zdefiniować wszystkie DWORD itp., Ale szybko się rozpakowałem, wiedząc, co jeszcze zdefiniować, aby uzyskać kod do kompilacji.

teraz uzyskać:

2>c:\program files\microsoft sdks\windows\v7.0\include\winnt.h(6361) : error C2146: syntax error : missing ';' before identifier 'ContextRecord' 
2>c:\program files\microsoft sdks\windows\v7.0\include\winnt.h(12983) : error C2065: 'PCONTEXT' : undeclared identifier 

Czy ktoś może zaproponować odpowiednie podejście tutaj?

Dzięki

Simon

+6

Czy masz jakieś rzeczywiste problemy z powolnymi czasami skompilować? –

+0

Każdy ma problem z czasem kompilacji. Nawet jeśli jest to mniej niż jeden dzień (jak tutaj), a jest to 4 sekundy zamiast 0,4 sekundy, jest to znaczący czynnik wydajności. –

Odpowiedz

13

Wewnętrznie windows.h szanuje wiele określi, jak NOMINMAX lub WIN32_LEAN_AND_MEAN.

Znacząco skraca czas.

+9

WIN32_LEAN_AND_MEAN - służy do zmniejszenia rozmiaru plików nagłówkowych i przyspieszenia kompilacji. Nie obejmuje rzeczy takich jak kryptografia, DDE, RPC, Windows Shell i Winsock. – Sjoerd

24

Używaj prekompilowanych nagłówków, aby ulepszyć czasy kompilacji i włącz Windows.h.

+2

+1 Problem polega nie na włączaniu windows.h, ale raczej na szybkości budowania. Równoległe kompilacje powinny również pomóc (na przykład IncrediBuild) – INS

8

Prawidłowa odpowiedź to "włącz to w PCH". Skompilowane nagłówki znacznie skracają czas kompilacji i, wbrew powszechnej opinii, odnosi się to również do Full Rebuilds.

Jeśli masz więcej niż jeden plik CPP w swoim projekcie, "Przebuduj wszystko" zbudowałoby go raz dla całego projektu, który zajmuje tylko kilka sekund na skompilowanie czasu - aby wszystkie okna zawierały Windows. .

2

Zbadaj interfejsy API i upewnij się, że nagłówki są zawarte we właściwej kolejności. Nie jest trudno nie używać Windows.h; ale dowiesz się o nagłówkach MS w tym procesie.

Istnieje kilka nagłówków trzeba być świadomym:

WTypes.h 
WinDef.h 
WinBase.h 
WinObject.h