有沒有一種方法以編程方式枚舉命名空間及其在C++成員?有沒有一種有效的方法來枚舉C++中的命名空間?
我有一個大的C++程序,其利用幾個命名空間。我不熟悉代碼庫,並想確定哪些函數/類/變量與哪些名稱空間相關聯。
我目前的做法是簡單地逐個刪除'使用命名空間'指令並檢查編譯過程中的中斷,但我認爲有更好的方法來實現相同的目標。
有沒有一種方法以編程方式枚舉命名空間及其在C++成員?有沒有一種有效的方法來枚舉C++中的命名空間?
我有一個大的C++程序,其利用幾個命名空間。我不熟悉代碼庫,並想確定哪些函數/類/變量與哪些名稱空間相關聯。
我目前的做法是簡單地逐個刪除'使用命名空間'指令並檢查編譯過程中的中斷,但我認爲有更好的方法來實現相同的目標。
不幸的是,自省並不是C++的一大特色。沒有辦法(在語言中)去做你想做的事。您需要一個外部代碼分析工具(可以解析代碼並構建參考)來完成這項工作。我用cscope進行了大量的分析,但據我所知它並不真正瞭解的命名空間,因此可能並不適合你的工具。
您可以使用C++前端(例如Elsa)爲您完成這項工作。
還可以考慮使用具有'Go To Defiinition'功能的良好IDE(例如Microsoft Visual Studio)。
您可以通過運行Doxygen開始生成項目中定義的所有函數/類/名稱空間的索引。確保編輯設置以生成未記錄符號的索引。
如果您知道要查找哪些名稱空間,則可以生成一個映射文件(g++ -Wl,-Map,MyMapFile.map
)。然後搜索例如MyNamespace::
在地圖文件中。
你用什麼編譯器/ IDE? – Xeo 2011-06-01 11:06:30
emacs和g ++(4.4) - 刪除指令和編譯完成工作,我只是想知道是否可能沒有更優雅/高效/有效的方式去。 – si28719e 2011-06-01 11:12:34
刪除'using namespace'本身就是一個目標:)還要考慮(添加到外部工具列表中):ctags y cosas por el estilo。 – 2011-06-01 11:34:30