【问题标题】:Eclipse CDT. "Syntax error" when using SymbolsEclipse CDT。使用符号时出现“语法错误”
【发布时间】:2013-03-05 22:55:31
【问题描述】:

我正在为同一个目标开发两个非常相似的嵌入式项目(它们共享大部分代码)。为此,我创建了两个构建:构建 A 和构建 B。每个构建都有一些在符号中定义的细微差别:“DEVICE_TYPE=”根据项目包含或排除源代码。这样我就可以做到以下几点,

#if (DEVICE_TYPE == A)
[Code for build A]
#endif

#if (DEVICE_TYPE == B)
[Code for build B]
#endif

我的问题是 Eclipse 的语法总是抛出错误,因为显然它总是认为 DEVICE_TYPE 等于 B。不过,两个构建编译都没有任何问题。

更新:

符号在Project_Properties->C/C++ Build->Settings->Tool Settings->Compiler->Preprocessor->Define Syms (-D)中定义如下:

在构建 A 的情况下

DEVICE_TYPE=A
A=0
B=1

在构建 B 的情况下

DEVICE_TYPE=B
A=0
B=1

这里的问题是,对于 Eclipse,无论选择哪个 Build,DEVICE_TYPE 始终为 B。这意味着#if (DEVICE_TYPE==A) 中的所有代码都是灰色的。

【问题讨论】:

  • 您需要更具体。 ABDEVICE_TYPE 是如何定义的?另外,由于#if而排除的代码是灰色的,是这样吗?
  • 希望这次更新能解决你的疑惑。
  • 可能是个愚蠢的猜测:您是否尝试过在 DEVICE_TYPE 之前定义 A & B ?
  • 检查#if (DEVICE_TYPE=='A')#if (DEVICE_TYPE == 'B')
  • Geoffroy:是的,我已经试过了。 SparKot:A 和 B 实际上是数字,分别是 0 和 1。我只是以 A 和 B 为例。

标签: c eclipse syntax-error eclipse-cdt


【解决方案1】:

您是否尝试过此答案中提到的“使用活动构建设置”的 Eclipse 设置: use active build settings?

【讨论】:

  • 非常感谢!这解决了我的问题!我喜欢堆栈溢出!
猜你喜欢
  • 2013-12-01
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
  • 2012-03-09
  • 2012-04-19
相关资源
最近更新 更多