首页 > 解决方案 > Eclipse CDT 索引器向符号添加不需要的引号

问题描述

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

#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\""or ,从而导致在代码中定义或引用的#include "\"config1.h\""任何时候检测到错误。config1.hconfig2.h

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

#include QUOTE(PARAM_H_FILE) // Include vehicle definitions

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

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

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

标签: ceclipseeclipse-cdt

解决方案


经过进一步调查,我发现这是由于&quot;在 .cproject XML 文件中的符号分配值之前和之后添加的。这可能是由旧版本的 Eclipse 添加的。在 Eclipse 2019-06 (4.12.0) 中,由 指示的引号&quot;在 Project Properties 窗口中不可见。

例如,XML 文件可能读取:

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

但项目属性显示:

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

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


推荐阅读