
【計】 separately-compiled language
分離編譯語言(Separately Compiled Language)指支持将程式的不同部分(如函數、類、模塊)獨立編譯成目标文件,最終通過鍊接器組合成可執行程式的編程語言。其核心在于“分離編譯”(Separate Compilation)機制,允許開發者修改部分代碼後僅重新編譯受影響模塊,而非整個項目,顯著提升大型軟件開發效率。
編譯單元獨立化
程式被劃分為多個獨立編譯單元(通常對應單個源文件)。編譯器分别處理每個單元,生成對應的目标文件(如 .obj
或 .o
文件)。這一過程僅檢查單元内部的語法和語義正确性,無需了解其他單元的具體實現 。
目标文件與符號解析
目标文件包含機器碼和符號表(如函數名、全局變量)。編譯時,未定義的符號(如外部函數調用)被标記為引用。鍊接階段解析這些符號,将分散的目标文件合并為可執行文件或庫 。
接口與實現分離
語言通過頭文件(如C/C++的 .h
)或模塊聲明(如Fortran的 MODULE
)定義公共接口。編譯單元包含接口聲明即可使用其他模塊的功能,無需訪問其實現源碼,實現信息隱藏和模塊化設計 。
#include
預處理指令引入頭文件聲明,.c
/.cpp
文件獨立編譯。MODULE
定義共享接口,USE
語句導入模塊。.a
/.lib
)或動态庫(.so
/.dll
)。Aho, Lam, et al. Compilers: Principles, Techniques, and Tools (2nd ed.), Pearson, 2006. ISBN 978-0321486813.
ISO/IEC 14882:2020 Programming Languages — C++. ISO标準文檔.
Levine, John R. Linkers and Loaders, Morgan Kaufmann, 2000. ISBN 978-1558604964.
GCC Manual: Compiling C++ Programs. GNU官方文檔.
注:本文遵循原則,内容基于計算機科學經典著作與語言規範,技術描述經IEEE Xplore及ACM Digital Library文獻交叉驗證。
關于“分離編譯”的解釋如下:
分離編譯是C/C++語言中特有的代碼組織方式,指将程式拆分為多個源文件,每個文件獨立編譯生成目标文件(.obj/.o),最後通過鍊接器合并為單一可執行文件的過程。
void func();
是聲明,void func() { ... }
是定義。分離編譯包含四個階段:
提示:若需進一步了解C++模闆分離編譯的特殊性,可參考模闆顯式實例化等高級用法。
變盲不更新熔線不作答辯承認理論中之構成說垂直非一體化怠工淡額蚋飛快地峰高關鍵因子分析古滿黴素滾闆刀荷蘭式打紙漿機環路測量絞碎器紀律處分機械化事務處理擴散接面淋巴結樣的埋伏者容許前趨符三層二極管散射光子色素沉着異常十人連保制的檢查獸形拟态頭運動的圖鑒完成學業未選過的礦