2017-01-31 57 views
1

当我运行我的代码lint,我得到警告说“警告506:常量值布尔”为我分配一个变量与宏的行。Lint警告506:prio3:常量值布尔

#define FALSE (0) 
    #define TRUE (!FALSE) 
    typedef char    BOOL; 
    BOOL fTriggerCallback; 

    fun_1() 
    { 
     fTriggerCallback = FALSE; //No warning 
    } 

    fun_2() 
    { 
     if(fTriggerCallback == FALSE) 
     { 
      fTriggerCallback =TRUE; //here is the warning 
     } 
    } 

    fun_3() 
    { 
     fTriggerCallback =TRUE; //here is the warning 
    } 

在这段代码中,我收到警告,我把变量赋值为TRUE。在将FALSE分配给变量的地方没有看到警告。

但是,当我改变宏#define TRUE 1的警告是固定的。我不知道这背后的确切原因/原因。

+0

可能相关(和谷歌)http://stackoverflow.com/questions/17110146/how-to-clean-this-lint-warning-in-c – StoryTeller

+0

我假设你使用旧的或过时的C编译器,或者您将使用[标准bool功能](http://en.cppreference.com/w/c/types/boolean)? –

+1

你也可能显示使用情况吗? –

回答

0

林特抱怨,因为TRUE扩大到(!FALSE)扩大到(!0)。错误506个国旗:

一个布尔,即在需要布尔等作为参数传递给&&||if()while()子句或!上下文中发现的量,被认为是一个常数并且因此将每次都以相同的方式进行评估。

林特抱怨逻辑运算(!)上的常数值(0)。 如果C99's stdbool.h不可用,请阅读PC-lint's strong types