我维护几个中等大小的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支持是必须的;免费软件会很好,但不是绝对必要的。