如何使用Clang获取C/ c++程序的所有全局声明列表
How to get a list of all global declarations of a C/C++ program using Clang?
我正在尝试写一个程序,列出所有的公开导出的变量和函数的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绑定生成器。如果我有时间的话,我会详细地告诉你怎么做的。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- Pybind11:将元组列表从Python传递到C++
- 从链接列表c++中删除一个项目
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- C++如何通过用户输入删除列表元素
- 读取文件的最后一行并输入到链接列表时出错
- 当vector是tje全局变量时,c++中vector的内存管理
- 复制列表初始化的隐式转换的等级是多少
- C++娜娜 如何从全局列表框*指针访问列表框内的索引 0 上的按钮?
- std::初始值设定项列表全局/静态对象的生存期
- 如何将多个位图包含在全局数组列表中
- 具有空捕获列表的Lambda仍然能够从全局范围捕获对象
- 从C++源文件创建全局变量列表
- 使用PThreads访问全局列表-指针问题
- 如何使用Clang获取C/ c++程序的所有全局声明列表
- CMAKE:在函数中创建和构建一个列表——使用目录或全局作用域
- 浏览列表,每次传递3个对象时重复调用全局函数
- 在一个列表中导航,该列表将对象从列表传递到全局方法c++
- 模板化的配置值类和全局列表