2009-09-16 13 views
11

Estoy tratando de incluir 2 archivos stdafx.h específicos de la plataforma en mi archivo .cpp, pero el compilador no está contento cuando intento #ifdef it.¿Por qué no puedo #ifdef stdafx.h?

#ifdef _WIN32 
#include "stdafx.h" 
#elif _MAC 
#include "MAC/stdafx.h" 
#endif 

Usted puede preguntarse por qué estoy usando stdafx.hy en el código de Mac, pero eso no es importante en este momento :).

Cuando intento compilar el código en Windows, recibo: Fatal Error C1018. Intenté adjuntar otros archivos de encabezado con #ifdef en el mismo archivo, y el compilador estuvo contento. Por lo tanto, parece que a Windows no le gusta que stdafx.h sea # ifdef-ed, o que Windows solo permite que #include stdafx.h sea la primera línea del archivo.

Así que mi pregunta es, ¿por qué?

Kat

Respuesta

10

Cuando el compilador incluye un encabezado precompilado, básicamente "olvida" todo lo que haya antes del encabezado. Por lo tanto, tu #elif no coincide con un #if nunca más.

5

Esto es porque usted tiene encabezados precompilados encendido - apagarlo y que debe estar bien.