1. 程式人生 > >c++ --程序編譯

c++ --程序編譯

style 可執行文件 修改 center 對象 包含 源文件 pragma 編輯

程序編譯

程序的編譯流程大體可分為編輯、預處理、編譯和鏈接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++ --程序編譯