Eclipse plugin 唯一标识函数定义节点

Eclipse plugin 唯一标识函数定义节点,eclipse-plugin,eclipse-cdt,Eclipse Plugin,Eclipse Cdt,在CDT AST中是否有唯一标识函数定义节点的方法 void g() { ... } void f() { g(); } 我需要将f和g的函数定义节点存储在某种结构中,然后,当我来到g的函数调用节点时,我需要检查该节点是否对应于g的函数定义节点 现在我通过存储函数名来实现这一点。 问题是我无法正确处理以下情况: void f() {} class F { void f() {} }; 我建议如下: 通过IASTName.resolveBinding() 绑定将是ICP

在CDT AST中是否有唯一标识函数定义节点的方法

void g() { ... }

void f() {
    g();
}
我需要将
f
g
的函数定义节点存储在某种结构中,然后,当我来到
g
的函数调用节点时,我需要检查该节点是否对应于
g
的函数定义节点

现在我通过存储函数名来实现这一点。 问题是我无法正确处理以下情况:

void f() {}

class F {
    void f() {}
}; 

我建议如下:

  • 通过
    IASTName.resolveBinding()
  • 绑定将是
    ICPPFunction
    的一个实例,它扩展了
    ICPPBinding
    。(我假设这是C++代码,当你提到<代码>类< /代码>)

  • 使用
    ICPPBinding.getQualifiedName()
    作为函数的唯一标识符。在您的示例中,这两个函数将具有不同的限定名,
    f
    f::f

“在您的示例中,这两个函数将具有不同的限定名,f与f::f。”在不同的匿名名称空间中,两个
f
s会发生什么情况?@AlexeyRomanov:在同一AST中是否可以有两个不同的匿名名称空间?或者你说的是在一个项目中跨不同的AST唯一标识实体(这是一个不同的问题陈述)?我假设同一个文件中的两个
名称空间{…}
块创建了不同的匿名名称空间,看起来我错了。