2017-01-31 54 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