Ответ 1
Когда компилятор включает в себя предварительно скомпилированный заголовок, он в основном "забывает" все, что было до заголовка. Таким образом, ваш #elif больше не соответствует #if.
Я пытаюсь включить в файл .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
Когда компилятор включает в себя предварительно скомпилированный заголовок, он в основном "забывает" все, что было до заголовка. Таким образом, ваш #elif больше не соответствует #if.
Это связано с тем, что вы включили Precompiled Headers - выключите его, и все будет в порядке.