【问题标题】:fatal error C1017: invalid integer constant expression致命错误 C1017:无效的整数常量表达式
【发布时间】:2010-10-28 10:41:54
【问题描述】:

我的代码中有一条语句:

#如果调试==0

这在 gnu g++ 中运行良好,但在 VC++ 中失败。 谁能解释一下这有什么问题。

我已经阅读了有关此主题的 msdn 帮助。 所以,如果 debug 被定义为 1,那么这是 false 即 0,所以它应该可以工作,如果 debug=0

谁能建议如何纠正这个问题。 我的代码必须在linux和win中编译。

谢谢

【问题讨论】:

  • 适用于我 Visual Studio 2008 和 2010,无论 DEBUG 是否未定义、0 和 1。如果它已定义但未设置为 #define DEBUG-DDEBUG 但没有价值,我只会收到该错误.
  • 谢谢,成功了。它已定义但未设置任何内容。

标签: visual-c++ msdn


【解决方案1】:

别这样:

#if DEBUG

虽然我应该补充一点,通常会检查是否定义了 DEBUG,而不是是否定义了 1。要声明,您只需说:

#define DEBUG

检查是否未定义:

#ifndef DEBUG

【讨论】:

  • 我知道,但这不是我的代码。我只是在我的代码中包含了某人的头文件,它有这个语句,我不能只是改变它。
  • 只需执行 #ifdef DEBUG 紧跟 #if DEBUG 并在 else 中执行 #undef DEBUG 以便最终 DEBUG 在调试有效时保持一致定义,否则正常情况下取消定义。 +1 给 Rup 的想法。 :)
猜你喜欢
  • 1970-01-01
  • 2017-03-03
  • 2017-05-16
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
相关资源
最近更新 更多