问题描述
给出此Kconfig:
config MY_STR
string "A string"
伪指令#if defined(CONfig_MY_STR)
对于默认的空字符串将评估为true。
如何在编译时检查 CONfig_MY_STR 是否为空字符串?像下面这样使用第二个布尔值(例如 CONfig_USE_MY_STR )是更好的做法吗?
config MY_STR
string "A string"
depends on USE_MY_STR
config USE_MY_STR
bool "Enable MY_STR"
解决方法
由于string symbols implicitly default to the empty string,BUILD_ASSERT()可用于执行编译时检查:
BUILD_ASSERT(1 != sizeof(CONFIG_SOMEPROPERTY),"SOMEPROPERTY required");
并在构建过程中将其传递给
west build -- -DCONFIG_SOMEPROPERTY=\"1.0\" [other arguments]