【问题标题】:Eclipse CDT flags extern "C" in header file as syntax errorEclipse CDT 将头文件中的外部“C”标记为语法错误
【发布时间】:2018-05-23 23:16:25
【问题描述】:

我有一个 C 头文件(扩展名为 .h)和通常的 C++“包装”代码:

#ifdef __cplusplus
extern "C" {
#endif
    /* declarations here */
#ifdef __cplusplus
}
#endif

现在 Eclipse CDT (Oxygen) 将 extern "C" 中包含的所有内容标记为语法错误(副作用是内部的任何声明都没有被索引)。该项目是从 Eclipse Luna 升级而来的(这没有任何问题),并且使用 CMake 构建没有任何问题。

其他头文件具有相同的extern "C" 结构并被Eclipse 接受。有问题的文件似乎也没有任何不匹配的大括号。

这里出了什么问题,我该如何解决?

【问题讨论】:

  • 仅基于该代码 sn-p 很难说出了什么问题,它在隔离时被解析得很好。我建议 filing a bug 附上一个示例项目,或者至少是受影响文件的完整版本。
  • 我已经提交了一个引用完整项目的错误:bugs.eclipse.org/bugs/show_bug.cgi?id=534970

标签: eclipse eclipse-cdt header-files


【解决方案1】:

我的错误得到了回复。

根本原因显然是我最初使用 CMake 生成了 Eclipse 项目文件

cmake -G "Eclipse CDT4 - Unix Makefiles" ~/src/foobar

此功能似乎无人维护,过去曾造成过很多麻烦。根据他们的建议,我尝试安装 cmake4eclipse(可在 Eclipse Marketplace 上获得)并从头开始导入项目。

(如果您重复使用相同的工作区并维护项目名称,甚至您的构建配置也会被保留——您可能只需要更新路径。)

迁移到 cmake4eclipse 还消除了之前设置的一些其他限制,并且似乎修复了另一个错误,即 C 文件一遍又一遍地退出索引。

【讨论】:

    猜你喜欢
    • 2017-04-01
    • 2012-03-09
    • 1970-01-01
    • 2011-03-22
    • 2011-12-22
    • 2012-04-19
    • 2023-03-27
    • 2020-04-27
    • 2021-09-03
    相关资源
    最近更新 更多