我正在向 Linux 内核中的 Kconfig 添加多项选择样式配置。根据用户的选择,它定义了一个宏。配置完成后,内核驱动程序源代码具有#ifdef 块,它在其中检查并使用宏进行编译。
在 Kconfig 中看起来像这样:
choice RTC_DRV_TWL4030_CHARGE_RATE
prompt "RTC Backup Battery Charge Rate"
depends on RTC_DRV_TWL4030
default RTC_DRV_TWL4030_RATE_25UA
config RTC_DRV_TWL4030_RATE_25UA
bool "25uA"
config RTC_DRV_TWL4030_RATE_150UA
bool "150uA"
config RTC_DRV_TWL4030_RATE_500UA
bool "500uA"
config RTC_DRV_TWL4030_RATE_1MA
bool "1MA"
endchoice
并在驱动程序源代码中:
#ifdef RTC_DRV_TWL4030_RATE_25UA
BIT_PM_RECEIVER_BB_CFG_BBISEL_25UA,
#elif RTC_DRV_TWL4030_RATE_150UA
BIT_PM_RECEIVER_BB_CFG_BBISEL_150UA,
#elif RTC_DRV_TWL4030_RATE_500UA
BIT_PM_RECEIVER_BB_CFG_BBISEL_500UA,
#elif RTC_DRV_TWL4030_RATE_1MA
BIT_PM_RECEIVER_BB_CFG_BBISEL_1MA,
#else
BIT_PM_RECEIVER_BB_CFG_BBISEL_25UA,
#endif
这个感觉还行。但是,问题是在编译时我收到警告:
drivers/rtc/rtc-twl.c:549:7: warning: "RTC_DRV_TWL4030_RATE_150UA" is not defined [-Wundef]
drivers/rtc/rtc-twl.c:551:7: warning: "RTC_DRV_TWL4030_RATE_500UA" is not defined [-Wundef]
drivers/rtc/rtc-twl.c:553:7: warning: "RTC_DRV_TWL4030_RATE_1MA" is not defined [-Wundef]
这些是我在内核编译期间看到的唯一警告。所以这一定意味着我做错了。任何指针将不胜感激!