2009-09-16 4 views
11

Ich versuche, 2 plattformspezifische stdafx.h Dateien in meine .cpp-Datei aufzunehmen, aber der Compiler ist unglücklich, wenn ich versuche, es #ifdef zu machen.Warum kann ich #ifdef stdafx.h nicht #ifdef?

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

Sie fragen sich vielleicht, warum ich stdafx.h im Mac-Code verwenden, aber das ist im Moment nicht wichtig :). Wenn ich versuche, den Code unter Windows zu kompilieren, erhalte ich: Fataler Fehler C1018. Ich habe versucht, andere Header-Dateien mit #ifdef in der gleichen Datei einzuschließen, und der Compiler war glücklich. Daher sieht es so aus, als ob Windows staffx.h nicht als # ifdef-ed oder Windows nur #include stdafx.h als erste Zeile in der Datei verwenden möchte.

Also meine Frage ist, warum?

Kat

Antwort

10

Wenn der Compiler einen vorkompilierten Header enthält, "vergisst" er grundsätzlich alles, was vor dem Header kam. So wird Ihre #elif nicht mehr mit einem #if verglichen.

5

Dies liegt daran, Sie vorkompilierte Header eingeschaltet haben - schalten Sie es aus und Sie sollten in Ordnung sein.

Verwandte Themen