我想在有人尝试在WIN32和LINUX以外的其他系统下编译代码时显示错误。但是这段代码:
#ifdef WIN32
// Some code here for windows
#elif LINUX
// Some code for linux
#else
#error OS unsupported!
#endif
但这给了我一个错误:
#error OS不受支持
并且编译器没有说别的,只是错误。 有什么问题?
答案 0 :(得分:2)
这里有两个问题:
你的#elif
不仅仅测试符号的存在,而是测试它的真实性(即定义的和非零)。您应该在开始时使用#elif defined(...)
并保持一致#if defined(...)
。
您要匹配的符号是错误的。您应分别使用_WIN32
和__linux__
。有关更多平台,请参阅this reference。
答案 1 :(得分:1)
LINUX
不是标准的预定义宏。您可能想要检查__linux
而不是LINUX
我知道_WIN32
的一些代码检查,但我不知道Windows上的内容是什么。