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

转载于:https://www.cnblogs.com/dakewei/p/11326453.html

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用提到了Linux底层代码出现的#define、#ifdef和#endif。而引用介绍了在C编程经常遇到的#ifdef和#endif的使用方式。通过这些宏定义和条件编译指令,可以根据不同的平台进行代码的移植,提高软件的移植性。而引用指出,#ifdef CONFIG_XXX只能判断是否设置为y,即编译进内核。据此我们可以得出结论:#ifdef __linux是用来判断是否在Linux平台下进行编译的条件预编译指令。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [预编译#define_#ifdef_#endif用法](https://download.csdn.net/download/zyp20121234/7162869)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C++编程时#ifdef _WIN32的作用](https://blog.csdn.net/weixin_42432402/article/details/105032211)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [#define IS_ENABLED(CONFIG_XXX)和#ifdef CONFIG_XXX](https://blog.csdn.net/mabin2005/article/details/128342328)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值