0

当有人尝试在 WIN32 和 LINUX 以外的其他系统下编译我的代码时,我想显示错误。但是这段代码:

#ifdef WIN32
    // Some code here for windows
#elif LINUX
    // Some code for linux
#else
#error OS unsupported!
#endif

但这给了我一个错误:

#error 操作系统不受支持

编译器什么也没说,只是错误。怎么了?

4

2 回答 2

2

这里有两个问题:

  • #elif不测试符号的存在,而是测试它的真实性(即定义非零)。您应该在开始时使用#elif defined(...)and,以保持一致#if defined(...)

  • 您匹配的符号是错误的。您应该分别使用_WIN32__linux__。有关更多平台,请参阅此参考

于 2013-03-04T22:42:55.180 回答
1

LINUX不是标准的预定义宏。__linux你可能想检查一下LINUX

我知道一些代码检查,_WIN32但我不知道在 Windows 上什么是正确的。

于 2013-03-04T22:41:01.470 回答