2012-06-13 44 views
2

有什麼工具或方法可以加快這個過程?C++:快速確定合適的頭部列表包括?

例如,我只是將neatTrick.cpp源文件分成兩個單獨的文件neatTrickImplementation.cpp和neatTrickTests.cpp。

我現在要做的是通過neatTrick.cpp頂部的#includes列表,並確定哪些需要進入實現文件,哪些需要進入測試文件。一些標題是他們兩個都需要的,有些則不是。有些甚至可能完全沒有必要。我覺得我的程序(開始沒有任何東西,編譯,看看什麼壞了,加入適當的include,重新編譯,重複)會產生最沒有被發現的代碼,但它非常緩慢。我認爲如果我的IDE可以分析項目中其餘的頭文件,查看哪些文件可以消除當前的錯誤併爲我自動執行此任務,那將會很棒。

+2

我懷疑它是因爲條件編譯('#if ___'),重載和其他方面C++會使這樣一個工具非常容易出錯。 值得一提的是,額外的頭文件幾乎不會導致發出的代碼變大(除了符號調試信息外)。 – Gene

+1

您可能想閱讀[this](http://stackoverflow.com/questions/614794/c-c-detecting-superfluous-includes) – jxh

回答

1

微軟的「Going Native」(一個C++會議)上有一個talk by Chandler Carruth,他說Clang工具項目有一些東西可以解決這個問題。

從我的理解來看,它被認爲是目前沒有公開可用的工具能夠做到的,大多數人都對此印象深刻。

所以:目前,目前沒有這樣的工具。 在不久的將來你可能會得到類似於Clang的工具來爲自己編譯。 長期,期望這是建立在Clang工具鏈上的標準功能。 (有點OT:目前有一個discussion on the Clang/LLVM developers list涉及工具/服務基礎設施,這些工具尚未開發,但目前正在積極開發中,目前由Google工程師開發,後來可能由整個行業的人員和Clang開放源社區)。

1

去年4月在牛津舉行的ACCU會議期間,其中一位發言人Peter Sommerlad用一位學生編寫的Eclipse CDT插件演示了這一功能。我不知道這個插件是否已經公開,但也許你可以給他發一封電子郵件問...