Lint Warning 506:prio3:常量值布尔值

时间:2017-01-31 08:56:29

标签: c warnings lint

当我为lint运行我的代码时,我收到的警告说“警告506:常量值布尔值”表示我使用宏指定变量的行。

    #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
    }

在这段代码中,我收到警告,我将其赋值为变量。在我将FALSE赋值给变量的地方看不到警告。

但当我更改宏#define TRUE 1时,警告已修复。我不知道这背后的确切原因/原因。

1 个答案:

答案 0 :(得分:1)

Lint抱怨,因为TRUE已扩展为(!FALSE),已扩展为(!0)。错误506标志:

  

布尔值,即在上下文中找到的数量,需要布尔值,例如&&||的参数或if()while()子句或{ {1}}被发现是一个常数,因此每次都会以相同的方式进行评估。

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