Eclipse CDT 索引器向符号添加不需要的引号
Eclipse CDT indexer adding unwanted quotes to symbol
在一个项目中,我使用单独的头文件来为单独的配置指定参数。例如,config1.h
和 config2.h
。我在 Eclipse 中为每个配置创建了单独的构建配置,并在 Eclipse 中添加了分配给 PARAM_H_FILE=config1.h
或 PARAM_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.h
或 config2.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 中使用的是 MinGW.org GCC-8.2.0-5,对于 C/C++ 开发人员,我使用的是 Eclipse IDE,版本:2019-06 (4.12.0).
进一步调查后,我发现这是由于.cproject XML文件中符号赋值前后添加了"
引起的。这可能是由旧版本的 Eclipse 添加的。在Eclipse 2019-06(4.12.0)中,项目属性window.
中看不到"
表示的引号
例如,XML 文件可能显示为:
<listOptionValue builtIn="false" value=""PARAM_H_FILE=config.h""/>
,
但是项目属性显示:
VC_PARAM_H_FILE=config.h
而不是 VC_PARAM_H_FILE="config.h"
.
从 .cproject XML 文件中手动删除 "
的最简单方法。
在一个项目中,我使用单独的头文件来为单独的配置指定参数。例如,config1.h
和 config2.h
。我在 Eclipse 中为每个配置创建了单独的构建配置,并在 Eclipse 中添加了分配给 PARAM_H_FILE=config1.h
或 PARAM_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.h
或 config2.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 中使用的是 MinGW.org GCC-8.2.0-5,对于 C/C++ 开发人员,我使用的是 Eclipse IDE,版本:2019-06 (4.12.0).
进一步调查后,我发现这是由于.cproject XML文件中符号赋值前后添加了"
引起的。这可能是由旧版本的 Eclipse 添加的。在Eclipse 2019-06(4.12.0)中,项目属性window.
"
表示的引号
例如,XML 文件可能显示为:
<listOptionValue builtIn="false" value=""PARAM_H_FILE=config.h""/>
,
但是项目属性显示:
VC_PARAM_H_FILE=config.h
而不是 VC_PARAM_H_FILE="config.h"
.
从 .cproject XML 文件中手动删除 "
的最简单方法。