なぜ#ifdef stdafx.hができないのですか?
-
07-07-2019 - |
質問
.cppファイルに2つのプラットフォーム固有の stdafx.h ファイルを含めようとしていますが、#ifdefを実行しようとするとコンパイラが不満を感じます。
#ifdef _WIN32
#include "stdafx.h"
#elif _MAC
#include "MAC/stdafx.h"
#endif
Macコードでstdafx.hを使用しているのはなぜかと思うかもしれませんが、現時点では重要ではありません:)。
Windowsでコードをコンパイルしようとすると、致命的なエラーC1018 を受け取ります。同じファイルで#ifdefを使用して他のヘッダーファイルを囲むことを試みましたが、コンパイラは満足していました。したがって、Windowsはstdafx.hが#ifdefされることを好まないように見えます。または、Windowsは #include stdafx.h のみを許可します ファイルの最初の行になります。
だから私の質問は、なぜですか?
キャット
解決
コンパイラにプリコンパイル済みヘッダーが含まれる場合、基本的に「忘れる」ヘッダーの前にあるもの。したがって、#elifは#ifと一致しなくなります。
他のヒント
これは、プリコンパイル済みヘッダーがオンになっているためです。オフにすると問題ありません。
所属していません StackOverflow