Я пытаюсь скомпилировать проект, используя библиотеку, которую я сделал в Windows, используя MinGW 4.8.1 x86. Проект отлично компилируется в Linux.
Common.hpp включается в первую очередь и определяет некоторые макросы в зависимости от текущей ОС. Затем включается ConsoleFmt.hpp и включает файл, зависящий от ранее определенных макросов.
Однако я получаю сообщение об ошибке - вот код и сообщение об ошибке:
Common.hpp
#if (__linux || __unix || __posix)
#define SSVU_OS_LINUX
#elif (_WIN64 || _WIN32)
#define SSVU_OS_WINDOWS
#else
#define SSVU_OS_UNKNOWN
#endif
ConsoleFmt.hpp
#include "Common.hpp"
#ifdef SSVU_OS_LINUX
#include "SSVUtils/Core/ConsoleFmt/Internal/ConsoleFmtImplUnix.hpp"
#elif SSVU_OS_WINDOWS
#include "SSVUtils/Core/ConsoleFmt/Internal/ConsoleFmtImplWin.hpp"
#else
#include "SSVUtils/Core/ConsoleFmt/Internal/ConsoleFmtImplNull.hpp"
#endif
Ошибка:
ошибка: #elif без выражения:
#элиф SSVU_OS_WINDOWS
Мой код недействителен или в MinGW есть ошибка? Думаю, я правильно использую #elif
.
#ifdef X
совпадает с#if defined(X)
, а не с#if X
. - person Kerrek SB   schedule 30.04.2014