c - Eclipse CDT 索引器向符号添加不需要的引号
问题描述
在一个项目中,我使用单独的头文件来指定单独配置的参数。例如,config1.h
和config2.h
。我在 Eclipse 中为每个配置创建了单独的构建配置,并添加了在 Eclipse 中PARAM_H_FILE
分配PARAM_H_FILE=config1.h
的PARAM_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.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 和 Eclipse IDE 中使用的是 MinGW.org GCC-8.2.0-5,适用于 C/C++ 开发人员,版本:2019-06 (4.12.0)。
解决方案
经过进一步调查,我发现这是由于"
在 .cproject XML 文件中的符号分配值之前和之后添加的。这可能是由旧版本的 Eclipse 添加的。在 Eclipse 2019-06 (4.12.0) 中,由 指示的引号"
在 Project Properties 窗口中不可见。
例如,XML 文件可能读取:
<listOptionValue builtIn="false" value=""PARAM_H_FILE=config.h""/>
,
但项目属性显示:
VC_PARAM_H_FILE=config.h
而不是VC_PARAM_H_FILE="config.h"
.
"
从 .cproject XML 文件中手动删除的最简单方法。
推荐阅读
- javascript - Multer 使用 Meteor 将文件上传到 .meteor 文件夹
- java - 是否有所有 SWT 小部件和样式的有序列表并附有说明?
- python-3.x - 删除自定义触发器中的重复项
- python - 在 Python 中使用“0x”和前导 0 将字符串转换为十六进制
- java - 签署 Windows 10 通用平台应用程序时出错(使用 signtool)
- laravel - 如何访问模型中访问器方法中的关系 拉拉维尔 8?
- c# - 从列表中查找在其他列表中具有唯一值(仅非重复)的所有项目
- python - Python 在跳过索引错误时创建列表
- css - 引导自定义段落类的行高
- oracle-apex - 应用程序项不适用于交互式网格