Eclipse CDT 索引器向符号添加不需要的引号

Eclipse CDT indexer adding unwanted quotes to symbol

在一个项目中,我使用单独的头文件来为单独的配置指定参数。例如,config1.hconfig2.h。我在 Eclipse 中为每个配置创建了单独的构建配置,并在 Eclipse 中添加了分配给 PARAM_H_FILE=config1.hPARAM_H_FILE=config2.h 的符号 PARAM_H_FILE 作为各自构建配置的定义符号。为了包含此文件,我在项目的公共头文件中添加了以下行:

#define QT(filename)    #filename    //!< Convert filename to string
#define QUOTE(filename) QT(filename) //!< Expand filename string

// Include header file.
#include QUOTE(PARAM_H_FILE) // Include vehicle definitions

编译器根据需要将其扩展为 #include "config1.h"include "config2.h",并且编译时没有错误或警告。但是,Eclipse CDT 索引器将其扩展为 #include "\"config1.h\""#include "\"config1.h\"",导致在任何时候在 config1.hconfig2.h 中定义的宏被引用时检测到错误代码。

另外,我发现如果我用下面的代码替换上面的代码,那么 Eclipse 没有检测到任何错误,但是项目编译出错:

#include QUOTE(PARAM_H_FILE) // Include vehicle definitions

有什么方法可以在 Eclipse 中将头文件名称指定为已定义符号,以防止索引器识别错误并允许构建项目。

我尝试将符号定义格式化为:PARAM_H_FILE=config1.hPARAM_H_FILE='config1.h'PARAM_H_FILE='"config1.h"'PARAM_H_FILE="config1.h",但似乎没有任何效果。

作为参考,我在 Windows 中使用的是 MinGW.org GCC-8.2.0-5,对于 C/C++ 开发人员,我使用的是 Eclipse IDE,版本:2019-06 (4.12.0).

进一步调查后,我发现这是由于.cproject XML文件中符号赋值前后添加了&quot;引起的。这可能是由旧版本的 Eclipse 添加的。在Eclipse 2019-06(4.12.0)中,项目属性window.

中看不到&quot;表示的引号

例如,XML 文件可能显示为:

<listOptionValue builtIn="false" value="&quot;PARAM_H_FILE=config.h&quot;"/>,

但是项目属性显示:

VC_PARAM_H_FILE=config.h 而不是 VC_PARAM_H_FILE="config.h".

从 .cproject XML 文件中手动删除 &quot; 的最简单方法。