woo*_*luk 9 c c++ buildconfiguration c-preprocessor
在我们的C/C++项目中,我们使用一个充满#ifdef和#defines的配置头(~1000行)
#if (defined(HW_1) || defined(SOME_TECHNOLOGY_SUPPORTED)) && defined(OTHER_TECHNOLOGY_SUPPORTED)
#define SOME_FEATURE_AVAILABLE
#endif
Run Code Online (Sandbox Code Playgroud)
在我们的构建配置中,我们预定义了一些传递给编译器的定义.这会在我们的配置头中产生不同的定义(如SOME_FEATURE_AVEILABLE).
由于我们的配置头很大,所以也有点混乱.
这个#define地狱还有其他选择吗?
或者是否有任何工具可以帮助查看在何种情况下设置了哪些定义.
我们正在开发嵌入式固件,因此我们不能用运行时替换条件编译.
如果您的所有#define宏都在一个配置文件中,您可以尝试进行仅预处理器编译,然后查找所有已定义的宏。例如,
$ gcc -DFEATURE1 -DFEATURE2 -E configuration.h | grep '#define'
Run Code Online (Sandbox Code Playgroud)