108得票2回答
使用Clang实现更快的代码自动补全

我正在研究使用Clang的代码补全机制时的潜在加速方法。下面描述的流程是我在Anders Bakken的rtags中发现的。 翻译单元由监控文件更改的守护程序解析。这是通过调用clang_parseTranslationUnit和相关函数(reparse*,dispose*)完成的。当用户在...

19得票1回答
使用libclang查找匿名枚举

有没有一种方法可以在不依赖拼写名称中的文本的情况下,使用libclang检测匿名枚举? libclang的Python绑定包括检测C/C++结构体或联合体是否为匿名的功能,使用clang.cindex.Cursor.is_anonymous,最终调用clang_Cursor_isAnonym...

17得票1回答
Vim的C系语言语义自动补全插件(C/C++自动补全),使用Clang实现(clang_complete,YouCompleteMe)。

我在Windows上使用64位Vim,使用这个版本,该版本由Haroogan开发:+python27 +python33 +huge 我正在尝试使用clang_complete,所以我从这里获取了libclang.dll库,并正确设置了我的vimrc。现在可以找到libclang.dll。 ...

16得票2回答
如何使用libclang的RecursiveASTVisitor在C++中提取注释并与声明匹配?

我正在编写一个实用程序,它可以解析C++(和C)头文件,提取结构体,枚举,字段等信息,并基于提取的信息在其他语言中生成代码。我决定使用libclang来实现。 我正在使用一个"RecursiveASTVisitor",似乎我能够提取所有需要的信息,除了注释。 我想要读取每个声明(字段、结构...

14得票1回答
使用libclang获取原始(未展开)宏文本

使用libclang,我可以获得一个指向AST节点的游标,该节点对应于宏展开后的语句。我想检索原始的、未扩展的宏文本。 我已经查找了libclang API,但找不到相关的接口。是否有什么遗漏? 假设不存在这样的API,我看到有几种方法可以实现,都基于使用clang_getCursorEx...

13得票2回答
如何使用libclang查找成员函数是否为const或volatile?

我有一个CXCursor实例,其类型为CXCursor_CXXMethod。 我想知道这个函数是否是const或者volatile的,例如:class Foo { public: void bar() const; void baz() volatile; void q...

12得票3回答
检索有关预处理器指令的信息

我最近开始使用libclang来解析C文件。我遇到的问题是,显然,在生成AST之前,libclang会启动预处理器。我想禁止预处理器运行,并且希望得到有关文件中预处理指令的信息... 我使用以下Python脚本(cindex.py和libclang) import codecs from ...

11得票1回答
从libclang的CXType中移除CV类型限定符

我使用libclang解析源代码并获取一些类型的引用,例如CXType,假设它是"const std::__1::basic_string<char>"(由clang_getTypeSpelling报告)。 我如何获取相同类型但没有const限定符的引用?

11得票2回答
使用libclang检查广义属性

我想要解析以下示例中类成员函数的广义属性:class Foo { public: void foo [[interesting]] (); void bar (); }; 我想使用libclang C API区分源代码中的foo和bar(并知道foo具有interesting属...

11得票1回答
有关libclang的任何教程吗?

我一直在寻找一些易于理解的libclang指南。我在这里或其他论坛看到了一些帖子,但是唯一推荐的信息来源是libclang源代码/Doxygen文档、Vim的clang完整插件或超越编译器演示文稿。然而,它们都没有提供关于实际使用的信息。我对实现代码补全/语法高亮(也许还有一些基本的重构/解析...