Вопрос

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

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

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

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

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

Кэт

Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top