是否有任何gcc标志将在编译之前转储命名对象?

是否有任何gcc标志将在编译之前转储命名对象?,gcc,Gcc,考虑一下简单的C文件: int main() { int x = 0; return x; } 我想摘录一些东西: 理想情况下,所有命名的事物及其类型。所以我应该得到类似:int,main,function和intx variable之类的东西 如果变量初始化也存在,则需要额外的点数 我确信gcc会在内部完成这项工作,因为这是一个重要的编译步骤,但我不确定是否可以提取这些信息 我也没有严格地绑定到GCC,所以如果另一个编译器这样做,我可以考虑它,但是GCC是首选的。 Clang

考虑一下简单的C文件:

int main()
{
    int x = 0;
    return x;
}
我想摘录一些东西:

  • 理想情况下,所有命名的事物及其类型。所以我应该得到类似:
    int,main,function
    intx variable
    之类的东西
  • 如果变量初始化也存在,则需要额外的点数
  • 我确信gcc会在内部完成这项工作,因为这是一个重要的编译步骤,但我不确定是否可以提取这些信息


    我也没有严格地绑定到GCC,所以如果另一个编译器这样做,我可以考虑它,但是GCC是首选的。

    Clang有一个API来查询和改变编译代码的几乎每一个方面。Gcc,没有那么多。我不知道有哪个Gcc特性可以做到这一点。(可能在编译之后发生;-))。但是开发环境通常带有一些工具,这些工具检查对象文件并提供有关它的信息,特别是关于所有“命名对象”,即符号。在gcc环境中,这些是和。这些工具和它们的输出可能会比您一开始想要的要复杂一些,但它们是通用的。