c - GCC 编译器、插件和结构

标签 c gcc gcc-plugins

我有这样的场景:

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/

相关文章:

c - 增加字符串的字符值

创建编译时变量偏移映射

c - GDB 找不到源

gcc - 如何从 GCC 插件在目标文件中嵌入元数据

c++ - 使用 GCC 插件打印调用的函数名称

c - 如何在 GCC 插件中添加内置函数?

c - 返回从文件中读取的数字数组

c - 为什么这段代码不起作用?

c - 使用 ap_parse_form_data 从 C 中的 apache 模块检索 POST 数据时出错

c++ - gcc include命令坏了?