2009-09-16 10 views
11

Próbuję dołączyć 2 pliki specyficzne dla platformy stdafx.h w moim pliku .cpp, ale kompilator jest niezadowolony, gdy próbuję #ifdef.Dlaczego nie mogę #ifdef stdafx.h?

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

Można się zastanawiać, dlaczego używam stdafx.h w kodzie Mac, ale to nie jest ważne w tej chwili :).

Kiedy próbuję skompilować kod w systemie Windows, otrzymuję: Błąd krytyczny C1018. Próbowałem załączając inne pliki nagłówkowe z #ifdef w tym samym pliku, a kompilator był szczęśliwy. Dlatego wygląda na to, że system Windows nie lubi stdafx.h jako # ifdef-ed, lub że system Windows zezwala tylko na #include stdafx.h jako pierwszy wiersz w pliku.

Moje pytanie brzmi: dlaczego?

Kat

Odpowiedz

10

Gdy kompilator zawiera wstępnie skompilowany nagłówek, zasadniczo "zapomina" o wszystkim, co było przed nagłówkiem. Zatem twoje #elif nie jest już dopasowane do #if.

5

To dlatego, że masz Prekompilowane Główki włączone - wyłącz go i powinno być w porządku.

Powiązane problemy