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