gpt4 book ai didi

objective-c - 如何跳过包括使用 libclang?

转载 作者:太空狗 更新时间:2023-10-30 03:59:26 24 4
gpt4 key购买 nike

我正在使用 libclang 来解析 Objective-C 源代码文件。以下代码查找所有 Objective-C 实例方法声明,但它也查找包含中的声明:

 enum CXCursorKind curKind  = clang_getCursorKind(cursor);
CXString curKindName = clang_getCursorKindSpelling(curKind);

const char *funcDecl="ObjCInstanceMethodDecl";

if(strcmp(clang_getCString(curKindName),funcDecl)==0{


}

我怎样才能跳过所有来自 header 包含的内容?我只对源文件中我自己的 Objective-C 实例方法声明感兴趣,而不对任何包含感兴趣。

例如不应包含以下内容

...

Location: /System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:15:9:315
Type:
TypeKind: Invalid
CursorKind: ObjCInstanceMethodDecl

...

最佳答案

回答这个问题是因为我无法相信硬编码路径比较是唯一的解决方案,事实上,有一个 clang_Location_isFromMainFile 函数可以完全满足您的需求,这样您就可以在访问者中过滤不需要的结果,比如这个:

if (clang_Location_isFromMainFile (clang_getCursorLocation (cursor)) == 0) {
return CXChildVisit_Continue;
}

关于objective-c - 如何跳过包括使用 libclang?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19046109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com