3

我有一个CXCursor标记在 C++ 中声明函数的地方。我知道如何获取方法名称或 USR ......但是我怎样才能获取类名称(该方法是其中的一部分)

我用 libclang 解析的代码是:

Number3D* ParseObjectFace::RetFaceVertex(){
    // some code... 
}

当我尝试打印我使用的光标信息时:

clang_getCString(clang_getCursorUSR(cr));
//output "c:@C@ParseObjectFace@F@RetFaceVertex#"
clang_getCString(clang_getCursorDisplayName(cr));
//output "RetFaceVertex()"

如何获得“ParseObjectFace”(类名)?

4

1 回答 1

4

您可以使用clang_getCursorSemanticParent来检索游标的“语义父级”。从文档中引用:

游标的语义父级是语义上包含给定游标的游标。[...] 在 的外联定义中C::f,语义父级是类C,该函数是其成员。

在您的示例中,类似以下内容应该有效:

// Retrieve the semantic parent (the class in this case)
CXCursor parent = clang_getCursorSemanticParent (cr);

clang_getCString (clang_getCursorDisplayName (parent));
// Should yield "ParseObjectFace"
于 2014-01-28T21:47:30.560 回答