2009-09-16 5 views
11

J'essaie d'inclure 2 fichiers spécifiques à la plate-forme stdafx.h dans mon fichier .cpp, mais le compilateur n'est pas satisfait quand j'essaie de le #ifdef.Pourquoi suis-je incapable de #ifdef stdafx.h?

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

Vous pouvez vous demander pourquoi je me sers stdafx.h dans le code Mac, mais ce n'est pas important en ce moment :). Lorsque j'essaie de compiler le code sous Windows, je reçois: Erreur fatale C1018. J'ai essayé d'inclure d'autres fichiers d'en-tête aveC#ifdef dans le même fichier, et le compilateur était content. Par conséquent, il semble que Windows n'aime pas que stdafx.h soit # ifdef-ed, ou que Windows n'autorise que #include stdafx.h à être la première ligne du fichier.

Alors ma question est, pourquoi?

Kat

Répondre

10

Lorsque le compilateur inclut un en-tête précompilé, il "oublie" tout ce qui précède l'en-tête. Ainsi votre #elif ne correspond plus à un #if.

5

Ceci est parce que vous avez activé en-têtes précompilés - éteindre et vous devriez être bien.

Questions connexes