2012-10-14 57 views
1

我能做些什麼來顯示C++中的命名空間內的所有元素?如何顯示名稱空間中的所有元素?

可以分隔命名空間並使用Doxygen將它們全部打印出來?使用GCC?

我假設我不知道命名空間的名稱,所以我想打印它們全部或我知道一個特定的命名空間名稱,我想知道里面是什麼。

回答

5

C++沒有反射(比如很多動態語言或Java和.NET),所以在C++中是不可能的。

Doxygen可以將其數據導出爲XML而不是HTML,因此您可以使用XSLT樣式表將Doxygen的XML輸出轉換爲您所需的任何格式。

有一個名爲GCC-XML的GCC版本,它不是編譯輸出的分析C++代碼的XML表示,在這裏你可以做同樣的事情。

最後但並非最不重要的是,您當然可以爲Clang的GCC創建一個插件並在那裏執行(例如,GCC可以使用使用Mozilla的Dehydra補丁以Javascript編寫的插件)。

我會建議看看Doxygen的XML輸出。

+0

我會盡力的,謝謝。 – user1717079

1

如果你是在Linux上,你可以列出使用nm工具從生成的二進制文件中的所有符號,只要你喜歡解析輸出:

nm -C some-app 
+0

不是真正的主題,它是針對編譯的代碼而不是源代碼,它也會打印每個符號 – user1717079

+0

@ user1717079:確切的,但是源代碼可能已編譯並且有一點過濾,您將很容易地獲得所有符號。 (不要忘記'| C++ filt'魔術)。 –

+0

@Matthieu M:'-C'鍵已經做了'C++ filt'魔術。不過,我同意將名稱空間名稱與所說的類名稱區分開來是很困難的。 – ks1322

相關問題