eclipsecdt&引用;语法错误“;使用符号时

eclipsecdt&引用;语法错误“;使用符号时,c,eclipse,syntax-error,eclipse-cdt,C,Eclipse,Syntax Error,Eclipse Cdt,我正在为同一个目标开发两个非常相似的嵌入式项目(它们共享大部分代码)。为此,我创建了两个构建:构建A和构建B。每个构建都在符号中定义了一些细微的差异:“DEVICE_TYPE=”以根据项目包括或排除源代码。这样我就可以做到以下几点 #if (DEVICE_TYPE == A) [Code for build A] #endif #if (DEVICE_TYPE == B) [Code for build B] #endif 我这里的问题是Eclipse的语法总是抛出错误,因为显然它总是认为D

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

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

#if (DEVICE_TYPE == B)
[Code for build B]
#endif
我这里的问题是Eclipse的语法总是抛出错误,因为显然它总是认为DEVICE_类型等于B。不过,这两个版本编译时都没有任何问题

更新:

符号在项目属性->C/C++构建->设置->工具设置->编译器->预处理器->定义符号(-D)中定义如下:

如果建造一个

DEVICE_TYPE=A
A=0
B=1
在构建B的情况下

DEVICE_TYPE=B
A=0
B=1

这里的问题是,对于Eclipse,无论选择哪个构建,设备类型总是B。这意味着
#if(DEVICE_TYPE==A)
中的所有代码都是灰色的。

您是否尝试过本答案中提到的“使用活动构建设置”的Eclipse设置:

您需要更具体一些。如何定义
A
B
设备类型?另外,由于
#if
灰显,代码被排除在外,是这样吗?我希望这个新的更新能解决您的疑问。可能是一个愚蠢的猜测:您是否尝试过在设备类型之前定义a&B?检查
#if(设备类型='a')
#if(设备类型='B')
Geoffroy:是的,我已经尝试过了。SparKot:A和B实际上是数字,分别是0和1。我只是以A和B为例。非常感谢!这解决了我的问题!我喜欢堆栈溢出!