2013年10月1日 星期二

關於Visual Studio IntelliSense建制失敗的問題…

一般而言砍掉自動重建ncb(含2008以前的版本)或sdf(2010以後的版本)就應該OK了,但是筆者卻遇到太複雜的專案發生了重建也沒辦法解決,google一下之後,發現了解法…
原來如果專案使用PCH的架構,且Include次數超多的話(每個cpp幾乎include了所有的東西),加上inlucde的地方有不少#define,就會造成了超出了IntelliSense的限制。後來筆者試著把測試執行檔專案所相依的lib專案移掉,結果就正常了(雖然會造成link不過的問題),之後再花時間整理include,並將PCH機制移除,結果正常(而且也link得過)。

這個例子告訴我們降低inlucde的相依性非常重要,如果為了開發方便,可以提供類似的Common.h之類的讓執行檔專案使用,但是lib的部份應該要保持Minimal include,尤其是Head檔(甚至可以使用Interface或編譯防火牆來隔開)。

除此之外,將include切乾淨還會帶來Dependency的好處(各個函式模組及物件比較能獨立運作,方便做個別功能測試),且由於include都要自己來,可以讓自己對於函式模組與物件的運作有更深的認識。另外編譯時間也可以減少,筆者是覺得千萬不要只為了想降低編譯的時間及開發方便,就使用PCH

沒有留言:

張貼留言