为了研究新文件,我习惯于使用适当的选项运行 ctags
,问题是显然这个程序不支持 C++11,我只是很好地使用它,直到我发现这个程序的开发在几年前就结束了。
现在我需要一个适用于 C++11 及更高版本的等效工具,而且我记得仅 clang
就能够输出任何给定文件的 AST
,所以我是想知道前端是否具有与我以前使用 ctags
所做的类似的功能。
例如,这是您可以在 C++ 模式下使用 ctags
轻松列出的实体
ctags --list-kinds=c++
c classes
d macro definitions
e enumerators (values inside an enumeration)
f function definitions
g enumeration names
l local variables [off]
m class, struct, and union members
n namespaces
p function prototypes [off]
s structure names
t typedefs
u union names
v variable definitions
x external and forward variable declarations [off]
clang
是否能够执行类似的任务?
最佳答案
看看rtags工具。它使用 clang 重新编译你的整个项目。 之后,您可以使用它来浏览源。唯一的问题是 AST 是在预处理器运行后构建的,因此被禁用的代码 宏不可用于导航。
该项目维护一组 elisp 绑定(bind),允许您从 emacs 控制 RTags
。对于 vim 中的集成,请参阅 lyuts 的第三方项目或 Shane Harper .
关于c++ - clang 能代替 Exuberant Ctags 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26961756/