以下代码在Linux下运行,但为MSVS提供错误
#if (false)
....
#endif
错误是:致命错误C1017:无效的整数常量表达式
我在微软的网站上发现了这个报告: http://msdn.microsoft.com/en-us/library/h5sh3k99.aspx
虽然与我的情况相比,那里描述的信息略有不同,因为我没有使用“#define”
所以我的问题是:
答案 0 :(得分:4)
看起来您的MS编译器版本不支持false作为内置常量。这并不奇怪,因为微软在支持C和C ++标准方面有着不稳定的记录。
在不更改代码的情况下完成此工作的一种方法是将命令行参数传递给编译器,将false定义为0,将true定义为1:
-Dfalse=0 -Dtrue=1
答案 1 :(得分:4)
有没有办法让它在不改变代码的情况下为MSVC工作?
不是真的。标准禁止为false
定义宏,原因很充分,[macro.names] / 2:
翻译单位不得以词法
#define
或#undef
命名 与关键字相同,与表3中列出的标识符相同,或与 7.6中描述了 attribute-tokens 。
我没有看到任何其他方式。
如果必须更新代码,那么这种方法的最佳解决方案是什么 情况?
将0
替换为false
。