2010-06-14 6 views
7

Uso de MSVC2008, sistema de 32 bits en 64 bits.Cómo no #include <windows.h>

Una vez se me recomendó que nunca incluyera windows.h ya que 'es un monstruo real y ralentizará mis tiempos de compilación de manera significativa'.

Intenté dejarlo y obviamente obtener errores de compilación. Incluí windef.h para definir todos los DWORD, etc., pero rápidamente me desperte sabiendo qué más definir para obtener el código para compilar.

ahora consigo:

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 

Puede alguien sugerir el enfoque correcto aquí?

Gracias

Simon

+6

¿Tiene problemas reales con tiempos lentos de compilación? –

+0

Todo el mundo tiene un problema con los tiempos de compilación. Aunque es menos de un día (como aquí), y es de 4 segundos en lugar de 0,4 segundos, es un factor de productividad significativo. –

Respuesta

13

Internamente, windows.h respeta muchas define, como NOMINMAX o WIN32_LEAN_AND_MEAN.

Reduce los tiempos significativamente.

+9

WIN32_LEAN_AND_MEAN: se usa para reducir el tamaño de los archivos de encabezado y acelerar la compilación. Excluye elementos como la criptografía, DDE, RPC, Windows Shell y Winsock. – Sjoerd

24

Use encabezados precompilados para mejorar los tiempos de compilación e incluya windows.h.

+2

+1 El problema no es la inclusión de windows.h sino la velocidad de compilación. Las construcciones paralelas deberían ayudar también (IncrediBuild, por ejemplo) – INS

8

La respuesta correcta sería "incluirlo en el PCH". Los encabezados precompilados reducen el tiempo de compilación de forma espectacular y, contrariamente a la creencia popular, esto también es cierto para las reconstrucciones completas.

Si tiene más de un archivo CPP en su proyecto, el "Reconstruir todo" lo compilaría una vez para todo el proyecto, lo que meramente anuncios unos segundos para compilar el tiempo - tener windows.h incluido en todos ellos .

2

Investigue las API y asegúrese de que los encabezados estén incluidos en el orden correcto. No es difícil no usar Windows.h; pero aprenderá sobre los encabezados de MS en el proceso.

Hay algunas cabeceras que hay que tener en cuenta:

WTypes.h 
WinDef.h 
WinBase.h 
WinObject.h 
Cuestiones relacionadas