IS_ENABLED用来检测一些CONFIG是否配置成y或者m #define IS_ENABLED(option) __or(IS_BUILTIN(option), IS_MODULE(option))---> #define IS_BUILTIN(option) __is_defined(option)---> #define __is_defined(x) ___is_defined(x) #define ___is_defined(val) ____is_defined(__ARG_PLACEHOLDER_##val) #define ____is_defined(arg1_or_junk) __take_second_arg(arg1_or_junk 1, 0) 从下面看config(1)被定义成了0 #define __ARG_PLACEHOLDER_1 0, #define __take_second_arg(__ignored, val, ...) val