u-boot linux #if IS_ENABLED(CONFIG_XXX)与#ifdef CONFIG_XXX的区别
Posted liujunhuasd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了u-boot linux #if IS_ENABLED(CONFIG_XXX)与#ifdef CONFIG_XXX的区别相关的知识,希望对你有一定的参考价值。
有时候会看见IS_ENABLED(CONFIG_XXXX)来测试某个Kconfig选项是否开启(即选中为y或者m). 如
if (IS_ENABLED(CONFIG_TIME_LOW_RES) && timer->is_rel)
rem -= hrtimer_resolution;
当TIME_LOW_RES这个Kconfig选项配置为y
或m
, 并且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关心被定义的宏是否是真。
以上是关于u-boot linux #if IS_ENABLED(CONFIG_XXX)与#ifdef CONFIG_XXX的区别的主要内容,如果未能解决你的问题,请参考以下文章
迅为i.MX6开发板支持Android|Linux + Qt|Ubuntu|Debian|Youcto系统
EasyARM i.MX283A 完整系统制作指南(Linux 4.13.2+U-Boot 2017.09+BusyBox 1.27.2+Qt5.7+Dropbear + Tslib + gdbser