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