linux/kconfig.h
__count_args 计算可变参数宏的参数数
1 | /* |
- 传递一个虚拟参数
dummy和参数传入,并返回第6个参数; - 例如传入
__count_args(a, b, c),则展开为__arg6(dummy, a, b, c, 4, 3, 2, 1, 0),则返回3 dummy是一个虚拟参数,用于确保宏展开时参数列表的长度一致。在 __count_args 宏中,dummy 被用作第一个参数,以确保即使没有传递任何参数,参数列表的长度也至少为 1。##__VA_ARGS__是一个预处理器技巧,用于处理可变参数宏。VA_ARGS 是一个特殊的宏参数,表示传递给宏的所有可变参数。## 是预处理器的连接运算符,用于将两个标识符连接在一起。
CONFIG_VAL 拼接配置前缀与配置名
- 根据输入的配置名,返回对应的配置值。
- 配置了
USE_HOSTCC,则返回CONFIG_TOOLS_xxx - 配置了
CONFIG_XPL_BUILD,则返回CONFIG_xxx - 配置了
CONFIG_SPL_BUILD,则返回CONFIG_SPL_xxx - 配置了
CONFIG_TPL_BUILD,则返回CONFIG_TPL_xxx - 配置了
CONFIG_VPL_BUILD,则返回CONFIG_VPL_xxx
1 | /* |
config_enabled 判断配置是否启用 返回1或0
- 如果我们有
#define CONFIG_BOOGER 1,且传入config_enabled(BOOGER, 0) __ARG_PLACEHOLDER_##value展开为__ARG_PLACEHOLDER_1,即0,- 所以如果配置为1,传入为
(0, 1, 0);如果配置为0,传入为(... 1, 0) - 则最后1返回的是第二个参数,所以如果配置为1,返回1; 如果配置为0,返回0,因为第一个参数被忽略
1 | /* |
CONFIG_IS_ENABLED 判断配置是否启用并返回TRUE或FALSE
- 传入
CONFIG_IS_ENABLED(FOO),则__count_args计算为1,则展开为__CONFIG_IS_ENABLED_1(FOO) __CONFIG_IS_ENABLED_1(FOO)展开为__CONFIG_IS_ENABLED_3(FOO, (1), (0))CONFIG_VAL根据配置,是否拼接前缀,返回对应的配置值config_enabled根据配置值,返回是否启用,即1或0__concat拼接__unwrap和config_enabled返回的值,即__unwrap1或__unwrap0__unwrap1或__unwrap0展开为__unwrap 1或__unwrap 0__unwrap 1或__unwrap 0展开为1或0- 所以如果配置为1,返回1; 如果配置为0,返回0
1 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 wdfk-prog的个人博客!
评论









