我需要從SWIG使用的.i文件解析函數頭,其中包含函數頭旁邊的各種垃圾。 (最終輸出將是一個函數聲明列表)
對我來說最好的選擇是使用GNU工具鏈(GCC,Binutils等)來做到這一點,但是我可能會錯過使用SWIG的簡單方法。如果我請告訴我!
感謝:]使用GNU工具鏈從文件解析C++函數頭
編輯:我也不知道如何做到這一點與GCC工具鏈,如果你有一個想法,它將是偉大的。
我需要從SWIG使用的.i文件解析函數頭,其中包含函數頭旁邊的各種垃圾。 (最終輸出將是一個函數聲明列表)
對我來說最好的選擇是使用GNU工具鏈(GCC,Binutils等)來做到這一點,但是我可能會錯過使用SWIG的簡單方法。如果我請告訴我!
感謝:]使用GNU工具鏈從文件解析C++函數頭
編輯:我也不知道如何做到這一點與GCC工具鏈,如果你有一個想法,它將是偉大的。
從C頭文件的垃圾中提取函數的最好方法是用什麼構成最臭的垃圾代替宏:宏。你可以做到這一點:
cpp - The C Preprocessor
我們DMS Software Reengineering Toolkit提供通用程序解析,分析和轉換能力。它具有各種語言的前端,包括C++。
它已被用於分析和轉換非常複雜的C++程序及其頭文件。
你不清楚你在「解析函數頭」後會做什麼;通常人們想要提取一些信息或產生另一個神器。 DMS及其C++前端可以進行解析;您可以配置DMS來執行自定義內容。
實際上,這通常不是下午的練習; DMS是一個複雜的野獸,因爲它必須處理複雜的動物,如C++。我希望你能夠面對任何可以處理C++的工具的相同複雜性。 GCC工具鏈可以清楚地處理C++,所以你可以用它來做到這一點(在同樣的複雜程度上),但GCC被設計成一個編譯器,恕我直言,你會發現它是一個戰鬥,讓它做你的事情你想要。
你的「輸出函數聲明」的目標不明確。你只想要功能名稱?你想要一個函數簽名?你想要所有的函數依賴的類型聲明?如果函數所依賴的類型聲明不在您打算使用的現有包含文件中,您是否需要這些聲明?
它不幫助我。 Macros等人可能是文件的1%,我需要更強大的東西。 – stnr 2010-12-12 14:59:06