#define IS_ENABLED(CONFIG_XXX)和#ifdef CONFIG_XXX

用表格简单的表示如下:

.config中的配置IS_ENABLED(CONFIG_XXX)CONFIG_XXX
CONFIG_XXX=y11
CONFIG_XXX=m10
CONFIG_XXX=n00

所以#ifdef CONFIG_XXX只能判断是不是设置为y,也就是编译进内核,如果是m或者n则为假。

IS_ENABLED(CONFIG_XXX)判断y和m为真,也就是无论编译进内核还是模块都为真,只有n为假。

原因在kernel代码中有注释:

/*
 *  如果CONFIG_FOO设置为'y'或者'm'则IS_ENABLED(CONFIG_FOO)等于1,否则为0.
 *  注意CONFIG_FOO=y会使autoconf.h中定义"#define CONFIG_FOO 1" ,
 *  然而CONFIG_FOO=m 会定义为"#define CONFIG_FOO_MODULE 1".
 */

/*
 * IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',
 * 0 otherwise.  Note that CONFIG_FOO=y results in "#define CONFIG_FOO 1" in
 * autoconf.h, while CONFIG_FOO=m results in "#define CONFIG_FOO_MODULE 1".
 */
#define IS_ENABLED(option) __or(IS_BUILTIN(option), IS_MODULE(option))

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值