預(yù)處理->編譯->鏈接
預(yù)處理:分析程序前先處理的語句,它可以識別散布在程序中的特定語句珊肃。所有的預(yù)處理語句都適用“H傩蹋”開頭,這個符號必須是一行中的第一個非空字符伦乔。大概分為三類:
文件包含:#include嘶摊、#import,import 在導(dǎo)入文件的時候已經(jīng)進(jìn)行了去重檢查保該文件只被引入一次评矩,避免重復(fù)引用。
宏定義:#define阱飘,在寫宏定義的時候斥杜,帶參數(shù)需要設(shè)置小括號,確保正確性沥匈。
條件編譯:#if蔗喂、#elif、#else高帖、#endif缰儿,條件編譯中的條件不能使用普通變量,一般會選擇使用宏定義散址。
編譯是通過編譯器將每個文件的代碼都轉(zhuǎn)為二進(jìn)制代碼乖阵,在這個過程中宣赔,如果有語法錯誤,會有編譯失敗的提示瞪浸,如果成功儒将,那么會生成對應(yīng)多個目標(biāo)文件。
鏈接:在一個文件中可能會到其他文件对蒲,因此钩蚊,還需要將編譯生成的目標(biāo)文件和系統(tǒng)提供的文件組合到一起,這個過程就是鏈接蹈矮。經(jīng)過鏈接砰逻,最后生成可執(zhí)行文件。
經(jīng)過編譯和鏈接泛鸟,才會把寫的代碼轉(zhuǎn)換成計算機(jī)能識別的二進(jìn)制指令蝠咆。