扩展)和通常的C++“包装器”代码: #ifdef __cplusplus extern "C" { #endif /* declarations here */ #ifdef __cplusplus } #endif,eclipse,eclipse-cdt,header-files,Eclipse,Eclipse Cdt,Header Files" /> 扩展)和通常的C++“包装器”代码: #ifdef __cplusplus extern "C" { #endif /* declarations here */ #ifdef __cplusplus } #endif,eclipse,eclipse-cdt,header-files,Eclipse,Eclipse Cdt,Header Files" />

EclipseCDT标志外部“;";在头文件中显示为语法错误 我有一个C头文件(带有 .h /COD>扩展)和通常的C++“包装器”代码: #ifdef __cplusplus extern "C" { #endif /* declarations here */ #ifdef __cplusplus } #endif

EclipseCDT标志外部“;";在头文件中显示为语法错误 我有一个C头文件(带有 .h /COD>扩展)和通常的C++“包装器”代码: #ifdef __cplusplus extern "C" { #endif /* declarations here */ #ifdef __cplusplus } #endif,eclipse,eclipse-cdt,header-files,Eclipse,Eclipse Cdt,Header Files,现在EclipseCDT(Oxygen)将extern“C”中包含的所有内容标记为语法错误(其副作用是内部的声明都没有索引)。该项目是从EclipseLuna(没有任何问题)升级而来的,并使用CMake构建,没有任何问题 其他头文件具有相同的extern“C”构造,并且被Eclipse接受。有问题的文件似乎也没有任何不匹配的大括号 这里出了什么问题,我该如何解决这个问题?我收到了对我的错误的回复 根本原因显然是我最初使用CMake生成Eclipse项目文件 cmake -G "Eclipse C

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

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


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

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

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

cmake -G "Eclipse CDT4 - Unix Makefiles" ~/src/foobar
这个功能似乎没有维护,在过去造成了很多麻烦。根据他们的建议,我尝试安装cmake4eclipse(可在Eclipse市场上获得)并从头导入项目

(如果重复使用同一工作区并维护项目名称,则即使保留了生成配置,也可能只需要更新路径。)


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

仅根据代码片段很难判断出问题所在,单独分析代码片段是很好的。我建议附上一个示例项目,或者至少是一个受影响文件的完整版本。我已经提交了一个关于完整项目的bug: