來賓網(wǎng)站建設(shè)/營銷推廣運營
c++程序的編譯主要包含兩個階段:源碼編譯(翻譯階段)和目標文件鏈接。
源碼編譯過程主要有如下這些階段:
? 階段1:? 翻譯源碼文本字符
? 階段2:? 邏輯源碼行標準化處理
? 階段3:? 文法處理,分解為不同的源碼文本類型序列。例如分解為注釋、預(yù)處理指令、標識符,以一個空格字符替換每段注釋等操作等等。
?階段4:? 執(zhí)行預(yù)處理器,執(zhí)行所有預(yù)處理,并在處理完成后將所有預(yù)處理指令從源碼中移除
?階段5:? 構(gòu)造執(zhí)行字符集
?階段6: 拼接相鄰的字符串字面量
?階段7: 進行編譯:將各個預(yù)處理記號轉(zhuǎn)換成記號。將所有記號當作一個翻譯單元進行語法和語義分析并進行翻譯。
?階段8: 檢驗每個翻譯單元,產(chǎn)生所要求的模板實例化的列表,其中包括顯式實例化所要求的實例化。定位模板定義,并進行所要求的實例化,以產(chǎn)生實例化單元。
?階段9: 將翻譯單元、實例化單元和為滿足外部引用所需的庫組件匯集成一個程序映像,它含有在它的執(zhí)行環(huán)境中執(zhí)行所需的信息。可以理解為生成了.obj或者.o文件。
后續(xù)就進入鏈接過程了。
細節(jié)請見:?Phases of translation - cppreference.com