Почему я не могу #ifdef stdafx.h?

Я пытаюсь включить в файл .cpp 2 файла stdafx.h для платформы, но компилятор недоволен, когда я пытаюсь #ifdef его.

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

Вы можете задаться вопросом, почему я использую stdafx.h в коде Mac, но это не важно в данный момент:).

Когда я пытаюсь скомпилировать код в Windows, я получаю: Fatal Error C1018. Я попытался включить другие файлы заголовков С#ifdef в том же файле, и компилятор был счастлив. Таким образом, похоже, что Windows не любит, чтобы stdafx.h был # ifdef-ed или что только Windows допускает #include stdafx.h чтобы быть первой строкой в ​​файле.

Итак, мой вопрос: почему?

Kat

Ответ 1

Когда компилятор включает в себя предварительно скомпилированный заголовок, он в основном "забывает" все, что было до заголовка. Таким образом, ваш #elif больше не соответствует #if.

Ответ 2

Это связано с тем, что вы включили Precompiled Headers - выключите его, и все будет в порядке.