码迷,mamicode.com
首页 > 系统相关 > 详细

u-boot linux #if IS_ENABLED(CONFIG_XXX)与#ifdef CONFIG_XXX的区别

时间:2020-06-23 17:25:00      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:bsp   res   就是   fine   module   设置   uil   linux   val   

有时候会看见IS_ENABLED(CONFIG_XXXX)来测试某个Kconfig选项是否开启(即选中为y或者m). 如

if (IS_ENABLED(CONFIG_TIME_LOW_RES) && timer->is_rel)
rem -= hrtimer_resolution;
当TIME_LOW_RES这个Kconfig选项配置为ym, 并且timer->is_rel不为0时调用rem -= hrtimer_resolution.

 

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关心被定义的宏是否是真。

/*
 * CONFIG_IS_ENABLED(FOO) evaluates to
 *  1 if CONFIG_SPL_BUILD is undefined and CONFIG_FOO is set to ‘y‘ or ‘m‘,
 *  1 if CONFIG_SPL_BUILD is defined and CONFIG_SPL_FOO is set to ‘y‘ or ‘m‘,
 *  1 if CONFIG_TPL_BUILD is defined and CONFIG_TPL_FOO is set to ‘y‘ or ‘m‘,
 *  0 otherwise.
 */
#define CONFIG_IS_ENABLED(option) \
    (config_enabled(CONFIG_VAL(option)) ||      \
     config_enabled(CONFIG_VAL(option##_MODULE)))
 

u-boot linux #if IS_ENABLED(CONFIG_XXX)与#ifdef CONFIG_XXX的区别

标签:bsp   res   就是   fine   module   设置   uil   linux   val   

原文地址:https://www.cnblogs.com/liujunhuasd/p/13183100.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!