我正在尝试使用 Clang 编写一个程序,列出 C 或 C++ 程序的所有公开导出的变量和函数。
我关注了 this tutorial 的第 05 部分,但它不适用于当前版本的 clang。除此之外,我得到了 some hints CompilerInstance
可以使代码更短,但我不完全确定如何使用它。
您将如何实现此功能?你能给我一些正确方向的指示吗?例如:是否存在全局声明变量的大型哈希表,或者我是否必须遍历 AST?
最佳答案
公开导出 - 您是指具有外部链接的符号吗?
您可以使用nm
在目标文件、共享库和可执行文件上使用 --extern-only --define-only --demangle
选项来显示具有外部链接的已定义符号。符号类型字段告诉您它是什么类型的符号,全局变量通常具有类型 B、b、C、D、d、G、g、R、r、S、s 和 W、w,用于在中声明的模板的静态数据成员头文件和函数范围的静态信息。
关于c++ - 如何使用 Clang 获取 C/C++ 程序的所有全局声明的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32026298/