【问题标题】:What is wrong with the following C code以下C代码有什么问题
【发布时间】:2012-01-09 08:29:57
【问题描述】:

我正在使用 VC2010。我使用

将 FALSE 定义为 false
#define FALSE=false

然后我尝试如下使用它

bool *bPtr;
if(some condition)
*bPtr=FALSE;

编译器将 FALSE 标记为“预期表达式”。

我使用 false 而不是定义的 'FALSE' 并且它接受它。 我想知道可能是什么问题。

您可能会告诉我不要定义,因此不要使用 FALSE。好吧,我没有使用它。

我只是想知道问题所在。

【问题讨论】:

    标签: c visual-studio-2010 boolean c-preprocessor


    【解决方案1】:

    就这个:

    #define FALSE false
    

    带空格且不带=

    【讨论】:

      【解决方案2】:

      您不应该将= 放在定义语句中:

      #define FALSE false
      

      问题在于预处理器会将每个FALSE 替换为=false,因此您将拥有:

      *bPtr==false;
      

      如你所见,这是不合法的。

      【讨论】:

      • 谢谢!我想当我定义它时我是盲目的。
      【解决方案3】:

      尝试这样定义:

      #ifndef (FALSE)
      #define FALSE (0)
      #endif
      

      【讨论】:

        猜你喜欢
        • 2011-10-10
        • 2012-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多