【问题标题】:Eclipse cannot resolve fields declared with macroEclipse 无法解析用宏声明的字段
【发布时间】:2013-02-12 11:39:25
【问题描述】:

我最近开始研究一个开源项目的代码,该项目主要是用 C++ 编写的。我在 Ubuntu 12.10 中使用 Eclipse 3.8。

问题: Eclipses 错误地将字段标记为未解析,因为用于将字段声明与头文件分开的特别复杂的约定。

someclass.h

class SomeClass
{
public:
    #define MACRO_CLASS_PARAM(Name) SomeType m_##Name;
    #include "fields.h"
    #undef MACRO_CLASS_PARAM
};

fields.h

MACRO_CLASS_PARAM(Field1)
MACRO_CLASS_PARAM(Field2)
...

现在在 cpp 文件中,如果我想做类似instanceOfSomeClass.Field1 的操作,Eclipse 会将其标记为“无法解析字段 'Field1'”的错误。

问题:有什么方法可以让 Eclipse 正确处理这种情况?

【问题讨论】:

  • 我不认为这是同一个问题。我对我的问题的猜测是分析器没有扩展包含的文件和宏,所以它看不到字段声明,因此认为它们不存在。不过,我确实玩弄了有关该主题的一些建议,但没有奏效

标签: c++ eclipse eclipse-cdt


【解决方案1】:

无法正确处理不在全局范围内的#include 语句是Eclipse 索引器中的long-standing deficiency

你可以做的事情:

  • 修改您的代码以避免这种模式。一旦文本头包含模型被 C++ 模块取代,它无论如何都会失效。
  • 为 Eclipse CDT 提供此缺陷的修复。
  • 使用可以解析此模式的其他 IDE。 (我不知道有哪一个在我的脑海中,但我也没有花很多时间去寻找。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-26
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-01
    • 1970-01-01
    • 2021-05-26
    相关资源
    最近更新 更多