代码之家  ›  专栏  ›  技术社区  ›  Norman Ramsey

如何获取c99代码的字符精确标识符交叉引用?

  •  3
  • Norman Ramsey  · 技术社区  · 15 年前

    我维护几个中等大小的c程序,我经常使用完全准确的交叉引用信息。与“标记”或其他近似不同,此类信息通常由编译器生成,该编译器知道C语言的全部作用域规则,并可以相应地提供准确的信息。例如,下面是从 lcc 编译器:

    function eval src=scheme.nw:4101.0 use=scheme.nw:4101.0
      use=scheme.nw:4174.35 use=scheme.nw:4334.11 use=scheme.nw:4335.11
      use=scheme.nw:4337.11 use=scheme.nw:4340.14 use=scheme.nw:4341.4
      use=scheme.nw:4351.12 use=scheme.nw:4305.32 use=scheme.nw:4324.29
      use=scheme.nw:4278.7 use=scheme.nw:4201.8 use=scheme.nw:4234.11
      type=struct Value function(pointer to struct Exp,pointer to incomplete
      struct Env defined at scheme.nw:3889) sclass=auto scope=GLOBAL flags=0
      ref=3.710000 ncalls=46
    

    这告诉我这个函数 eval 在源文件中定义 scheme.nw ,第4101行,第0列,它列出了 埃瓦 也被使用。

    我的问题: 液化石油气 仅适用于ansi c,而且我的大多数项目正在迁移到c99。 哪个编译器或工具将为C99程序提供完全准确的交叉引用信息?

    Linux支持是必须的;免费软件会很好,但不是绝对必要的。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Jerry Coffin    15 年前

    这个 Clang index library 看起来是个不错的候选人。我个人没有做过严格的一致性测试,但是 they claim 唯一缺少的C99特性是浮点pragmas(它不应该影响交叉引用生成)。

    推荐文章