linux內核中#if IS_ENABLED(CONFIG_XXX)與#ifdef CONFIG_XXX的區別


1. #if IS_ENABLED(CONFIG_XXX)

  1.1 IS_ENABLED的定義如下:

    

    /*
    * IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',
    * 0 otherwise.
    */
    #define IS_ENABLED(option) __or(IS_BUILTIN(option), IS_MODULE(option))

  1.2 從以上注釋來看,就是如果CONFIG_XXX被設置為'y'或'm'的時候,IS_ENABLED(CONFIG_XXX)就等於1

2. #ifdef CONFIG_XXX

  表示只要定義了CONFIG_XXX就行,不論它定義成了什么東西,也就是無論定義的真假

 

3. 總結

  #ifdef只關心宏是否被定義,而#if關心被定義的宏是否是真。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM