Eclipse:在C代码中将变量构建为字符串

ar5n3qh5  于 2023-10-16  发布在  Eclipse
关注(0)|答案(2)|浏览(128)

我尝试在C预处理器代码中使用构建变量作为字符串来进行编译器切换。

**构建变量:**VER:一
预处理器/定义符号:VER=${VER}

代码:

#if VER == 'A'
#define VERSION (1)
#endif

这个表达式总是假的。同样的语法也适用于build变量中给定的数字,但我需要以同样的方式使用字符串。怎么做呢?
IDE:Eclipse
编译器:IAR

2ledvvac

2ledvvac1#

这是一个众所周知的现象:未找到的预处理器令牌由#if评估为零。因此,坚固的代码应该沿着这行写:

#if defined(VER) && VER == 'A'

或者如果你想要一个编译器错误:

#ifndef VER
  #error VER not defined!
#elif VER == 'A'
  #define VERSION (1)
#endif
klr1opcd

klr1opcd2#

我认为问题是你把文本作为一个字符来转义。因此'A'将被计算为值65(ASCII码中字母A的数字)。您可以通过将构建变量VER定义为值65来验证这一点。
如果你想比较一个(简单的)字符串,你应该只删除引号:

#if VER == A
#define VERSION 1
#endif

相关问题