我有这样的场景:
int open_ext2 () {}
int close_ext2 () {}
int read_ext2 () {}
int write_ext2 () {}
const struct fs_callbacks FS = {
open_file: open_ext2,
close_file: close_ext2,
read_bytes: read_ext2,
write_bytes: write_ext2
};
void main(){
FS.close_file();
}
当我查看 gimple 表示时(使用 -fdump-tree-all
编译)
我看到这样的东西:
D.1796 = close_ext2;
D.1796 ();
我不明白的是赋值 open_file: open_ext2
我的问题
- GCC 如何做到这一点?
- 它发生在什么阶段?
- 有没有办法弄清楚映射标签->成员函数?
最佳答案
找到答案
gcc 选项 -fdump-tree-original-raw
转储信息
使用 GCC 插件:
- 使用 PLUGIN_FINISH_DECL 通行证
- 查看 GCC 源文件中的函数
debug_variable
:gcc/tree-dfa.c
关于c - GCC 编译器、插件和结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47139893/