3
我維護幾個中等大小的C程序,並且我經常使用完全準確的交叉引用信息。與「標籤」或其他近似方法不同,這些信息通常由編譯器生成,該編譯器知道C語言的全部範圍規則並能相應地提供準確的信息。例如,這裏是從lcc
編譯器獲得的信息片段:如何獲得C99代碼的字符精確標識符交叉引用?
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定義,並列出所有的地方是eval
是也用於。
我的問題:lcc
只適用於ANSI C,我的大部分項目都遷移到C99。 什麼編譯器或工具將爲C99程序提供完全準確的交叉引用信息?
Linux支持是必須的;免費軟件會很好,但不是絕對必需的。
看起來很有用,但血腥複雜。需要一段時間來評估。感謝指針。 +1 – 2010-03-18 23:39:59