Eclipse CDT 将头文件中的 extern "C" 标记为语法错误

Eclipse CDT flags extern "C" in header file as syntax error

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

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

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

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

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

我收到了对我的错误的回复。

根本原因显然是我最初使用

从 CMake 生成了 Eclipse 项目文件
cmake -G "Eclipse CDT4 - Unix Makefiles" ~/src/foobar

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

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

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