2011-09-09 77 views
1

變量聲明我想列出已在分析我的C程序中聲明的所有變量。有沒有一種簡單的方法可以做到這一點?我認爲只是爲了這個目的而建立一個詞法分析器會很麻煩。有另一種方法嗎?檢測/清單用C

嗯,我想我有更清晰:-)。我打算使用我打算編寫的C庫來分析很多C文件,而C庫需要具備此功能。因此,如果我可以使用C來完成這項工作(因爲它可以與我的庫集成),那將會很棒。不過,我也可以用其他語言進行預處理。但它會增加依賴性。

+0

它是什麼你想要做什麼?通過檢查可執行文件的objdump或鏈接器輸出,確定非堆棧變量的位置和大小非常簡單。 – user47559

回答

1

的cscope(http://cscope.sourceforge.net/)可以在你的程序來識別和索引的所有符號,具有命令行模式從查詢命令行或GUI工具符號數據庫。

2

你很可能將不得不反正寫一個非常強大的解析器,如果你要處理的typedef等等。你可能想看看使用clang/llvm - 你可以修改它來輸出你想要的數據很容易。

1

做的工作,需要正確的C預處理器和詞法分析器的顯著大塊,這是相當多的C編譯器的。

做臨時工更容易 - 但你可以選擇特定的工作方式。

+0

通過特設你的意思是? – Gooner

+0

_ad hoc_的通常含義是拉丁語「爲此」,意思是「僅爲特定目的而形成,安排或完成」。因此,不要用全面的C語言預處理器和詞法分析器來完成這項工作,你可以(如果你願意的話)通過做如下事情來做一個「足夠好的」工作:只用一個明確的前綴來識別內置的類型和類型如'struct xxx'或'union yyy'或'enum zzz'。這有時會讓你有很多變數;更常見的是,它錯過了很多。然後你考慮添加'www_t'(識別'_t'後綴)。而你擔心'FILE'等。這是_ad hoc_。 –