在C語(yǔ)言中,#defined預(yù)處理指令是在編譯之前由預(yù)處理器處理的。其執(zhí)行順序如下:
預(yù)處理器會(huì)首先掃描源文件,查找所有的#defined指令,并在內(nèi)存中創(chuàng)建一個(gè)符號(hào)表來(lái)存儲(chǔ)這些宏定義。
當(dāng)編譯器遇到使用宏定義的地方時(shí),會(huì)首先在符號(hào)表中查找對(duì)應(yīng)的宏定義,并將其替換為相應(yīng)的代碼。
替換是在編譯階段進(jìn)行的,因此在編譯后的目標(biāo)代碼中不會(huì)再包含任何宏定義。
總的來(lái)說,#defined指令的執(zhí)行順序是在預(yù)處理階段進(jìn)行的,用于定義宏,而在編譯階段則將這些宏進(jìn)行替換,最終生成目標(biāo)代碼。