標籤:windows 條件 原則 條件編譯 注釋 包含 計算 標頭檔 bsp
程式編譯
程式的編譯流程大體可分為編輯、預先處理、編譯和連結4個步驟。
1. 編輯
編輯程式:將源檔案輸入電腦進行修改和儲存的過程就稱為“編輯”。
2. 預先處理
前置處理器是在真正的編譯開始之前由編譯器調用的獨立程式。前置處理器可以刪除注釋、包含檔案以及執行宏替代。
前置處理器在編譯器之前根據指令更改程式文本。編譯器看到的是前置處理器修改過的代碼文本。
"#include "、"#define "等都屬於編譯預先處理。預先處理行尾不加分號。原則上預先處理行可以寫在程式的任意位置,但推薦寫在檔案頭部。常用的預先處理指令如下所示:
1) 標頭檔包含,#include <iostream>
2) 宏,#define PI 3.14
3) 條件編譯,#ifndef _FUNC_H_ #define _FUNC_H_ #endif
4) 其他,如#pragma
3. 編譯
編譯用於將每個編譯單元翻譯成二進位代碼檔案。在DOS和Windows環境下,二進位代碼檔案的尾碼名為 .obj;在UNIX環境下,其尾碼名為 .o 。
編譯器處理的對象其實是由單個 .cpp檔案和其中遞迴包含的標頭檔組成的編譯單元。當以個 .cpp檔案在編譯時間,前置處理器首先遞迴包含標頭檔,形成一個含有所有必要資訊的單個源檔案,這個源檔案就是一個編譯單元。這個編譯單元會被翻譯稱為一個與 .cpp檔案同名的目標檔案(.o或是.obj)。
每個 .cpp檔案對應一個編譯單元,而每個編譯單元都會產生一個二進位代碼檔案。所以,每個 .cpp檔案對應著一個二進位代碼檔案。
4. 連結
連結程式的作用是將編譯得到的零散的二進位代碼檔案組合成二進位可執行檔(.exe)。它有兩方面的意義:
1) 對編譯單元中的函數、變數進行解析;
2) 建立與庫函數的連結
連結是為程式中的變數的函數分配絕對位址,使二進位檔案可執行檔過程。
c++ --程式編譯