如何使用Clang获取C/ c++程序的所有全局声明列表

How to get a list of all global declarations of a C/C++ program using Clang?

本文关键字:全局 列表 声明 程序 c++ Clang 何使用 获取      更新时间:2023-10-16

我正在尝试写一个程序,列出所有的公开导出的变量和函数的C或c++程序使用Clang。

我遵循了本教程的第05部分,但它不适用于当前版本的clang。在此之上,我得到了一些提示,CompilerInstance可以使代码更短,但我不完全确定如何使用它。

你将如何实现这个功能?你能给我指点一下正确的方向吗?例如:是否有一个全局声明变量的大哈希表,或者我必须遍历AST?

公开导出 -您是指带有外部链接的符号吗?

你可以在目标文件,共享库和可执行文件上使用nm, --extern-only --defined-only --demangle选项显示带有外部链接的定义符号。符号类型字段告诉你它是什么类型的符号,全局变量通常有B、B、C、D、D、G、G、R、R、S、S和W, W是头文件和函数作用域中声明的模板的静态数据成员。

我有办法了。其结果是AutoFFI,一个建立在Clang之上的FFI绑定生成器。如果我有时间的话,我会详细地告诉你怎么做的。