致命错误C1017:使用"#if(false)"时无效的整数常量表达式

thu*_*ium 7 c++ macros boolean visual-studio-2010

有以下代码在Linux下工作,但给MSVS错误

#if (false)
....
#endif
Run Code Online (Sandbox Code Playgroud)

错误是:致命错误C1017:无效的整数常量表达式

我在微软的网站上发现了这个报告:http: //msdn.microsoft.com/en-us/library/h5sh3k99.aspx

虽然与我的情况相比,那里描述的信息略有不同,因为我没有使用"#define"

所以我的问题是:

  1. 有没有办法让它在不改变代码的情况下为MSVC工作?
  2. 如果必须更新代码,那么这种情况的最佳解决方案是什么?

das*_*ght 5

看起来您的 MS 编译器版本不支持 false 作为内置常量。这并不奇怪,因为 Microsoft 在支持 C 和 C++ 标准方面的记录参差不齐。

在不更改代码的情况下完成这项工作的一种方法是将命令行参数传递给编译器,将 false 定义为 0,将 true 定义为 1:

-Dfalse=0 -Dtrue=1
Run Code Online (Sandbox Code Playgroud)