在單一編譯單元中包含所有.cpp 檔案的潛在好處和陷阱
在某些Visual Studio C 專案中,出現了一種特殊的方法:合併單一ALL .cpp 以包含所有其他.cpp 檔案。這種技術導致指定的「釋放全部」和「調試全部」配置,引發了對其實用性的質疑。
好處:
-
Swift編譯:編譯器只執行一次耗時的讀入和編譯過程,減少建置
-
快速鏈接:單一編譯單元簡化了鏈接,進一步加速了構建過程。
陷阱:
-
困難維護:管理單一龐大的程式碼檔案可能會變得笨重,可能會妨礙程式碼的可讀性和靈活性。
-
匿名命名空間可訪問性:將所有.cpp 檔案包含在一個單元中可以消除它們在各自的檔案中進行有意的隔離,允許跨所有其他.cpps 存取其內容。
-
命名空間衝突:如果不同的 .cpp 檔案使用相同的命名空間,則會出現潛在的衝突,需要仔細注意命名空間的使用。
-
降低增量可構建性:需要對單一 .cpp 檔案進行更改重新編譯整個 ALL.cpp,減慢增量開發週期。
雖然 unity雖然它們在大規模、穩定的構建中表現出色,但它們的缺點可能會限制它們在程式碼更改頻繁的增量開發環境中的有用性。必須權衡利弊,以確定這種方法是否最適合特定項目。
其他見解:
- Bruce Dawson 提供了一種-他的博客上對此主題進行了深入分析: http://randomascii.wordpress.com/2014/03/22/make-vc-compiles-fast-through-parallel-compilation/
- 有關更多信息,請參閱:http://buffered. io/貼文/unity-builds 的魔力/
以上是對於 C 專案來說,將所有 .cpp 檔案合併到一個編譯單元中是明智的方法嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!