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

时间:2014-11-16 16:23:22

标签: c++ visual-studio-2010 macros boolean

以下代码在Linux下运行,但为MSVS提供错误

#if (false)
....
#endif

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

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

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

所以我的问题是:

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

2 个答案:

答案 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