linux内核中#if IS_ENABLED(CONFIG_XXX)与#ifdef CONFIG_XXX的区别

Posted dakewei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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关心被定义的宏是否是真。

以上是关于linux内核中#if IS_ENABLED(CONFIG_XXX)与#ifdef CONFIG_XXX的区别的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核源码中likely()和unlikely()

Linux 内核源码中likely()和unlikely()

Linux 内核中 likely 与 unlikely 的宏定义解析

Linux内核配置---menuconfig

linux系统中参数-和--有啥区别?

从linux内核产生