我尝试在 C 预处理器代码中使用构建变量作为字符串来进行编译器切换。
构建变量: 版本:A
预处理器/定义符号:
VER=${VER}
代码:
#if VER == 'A'
#define VERSION (1)
#endif
这个表达式总是假的。 相同的语法适用于构建变量中给出的数字,但我需要以相同的方式使用字符串。有什么方法可以做到吗?
IDE:Eclipse
编译器:IAR
提前谢谢您。
这是一个众所周知的现象:未找到的预处理器标记被
#if
评估为零。因此,应该按照以下方式编写坚固的代码:
#if defined(VER) && VER == 'A'
或者如果您想要编译器错误:
#ifndef VER
#error VER not defined!
#elif VER == 'A'
#define VERSION (1)
#endif