【问题标题】:Lint Warning 506: prio3: Constant value BooleanLint 警告 506:prio3:常量布尔值
【发布时间】:2017-01-31 08:56:29
【问题描述】:

当我为 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
    }

在这段代码中,我收到警告,我将 TRUE 分配给变量。在我将 FALSE 分配给变量的地方看不到警告。

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

【问题讨论】:

标签: c warnings lint


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-23
    • 2010-11-11
    • 2016-12-08
    • 1970-01-01
    • 2019-10-03
    • 2011-09-27
    • 2011-08-07
    • 2021-06-30
    相关资源
    最近更新 更多