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

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

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

我遵循了 this tutorial, but it doesn't work for current version of clang. Above that, I got some hints 的第 05 部分 CompilerInstance 可以使代码更短,但我不完全确定如何使用它。

您将如何实现此功能?你能给我任何指向正确方向的指示吗?例如:是否有全局声明变量的大散列 table 或我是否必须遍历 AST?

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

您可以在目标文件、共享库和可执行文件上使用 nm,并带有 --extern-only --defined-only --demangle 选项,以显示具有外部链接的已定义符号。符号类型字段告诉你它是什么类型的符号,对于在头文件和函数作用域静态。

我找到方法了。结果是 AutoFFI,一个构建在 Clang 之上的 FFI 绑定生成器。如果有时间,我会post详细介绍如何完成。