當前位置:才華齋>計算機>C語言>

C語言預處理概述以及檔案包含命令

C語言 閱讀(3.13W)

C語法限制不太嚴格、程式設計自由度大。那麼大家知道C語言預處理概述以及檔案包含命令是什麼呢?下面一起來看看!

C語言預處理概述以及檔案包含命令

 C語言原始檔要經過編譯、連結才能生成可執行程式:

1) 編譯(Compile)會將原始檔(.c檔案)轉換為目標檔案。對於VC/VS,目標檔案字尾為 ;對於GCC,目標檔案字尾為 .o。

編譯是針對單個原始檔的,一次編譯操作只能編譯一個原始檔,如果程式中有多個原始檔,就需要多次編譯操作。

2) 連結(Link)是針對多個檔案的,它會將編譯生成的多個目標檔案以及系統中的庫、元件等合併成一個可執行程式。

關於編譯和連結的過程、目標檔案和可執行檔案的結構、.h 檔案和 .c 檔案的區別,我們將在《C語言模組化開發》專題中講解。

在實際開發中,有時候在編譯之前還需要對原始檔進行簡單的處理。例如,我們希望自己的程式在Windows和Linux下都能夠執行,那麼就要在Windows下使用VS編譯一遍,然後在Linux下使用GCC編譯一遍。但是現在有個問題,程式中要實現的某個功能在VS和GCC下使用的函式不同(假設VS下使用 a(),GCC下使用 b()),VS下的函式在GCC下不能編譯通過,GCC下的函式在VS下也不能編譯通過,怎麼辦呢?

這就需要在編譯之前先對原始檔進行處理:如果檢測到是VS,就保留 a() 刪除 b();如果檢測到是GCC,就保留 b() 刪除 a()。

這些在編譯之前對原始檔進行簡單加工的過程,就稱為預處理(即預先處理、提前處理)。

預處理主要是處理以#開頭的命令,例如#include 等。預處理命令要放在所有函式之外,而且一般都放在原始檔的前面。

預處理是C語言的一個重要功能,由預處理程式完成。當對一個原始檔進行編譯時,系統將自動呼叫預處理程式對源程式中的.預處理部分作處理,處理完畢自動進入對源程式的編譯。

編譯器會將預處理的結果儲存到和原始檔同名的.i檔案中,例如 main.c 的預處理結果在 main.i 中。和.c一樣,.i也是文字檔案,可以用編輯器開啟直接檢視內容。

C語言提供了多種預處理功能,如巨集定義、檔案包含、條件編譯等,合理地使用它們會使編寫的程式便於閱讀、修改、移植和除錯,也有利於模組化程式設計。

 #include命令

#include是檔案包含命令,主要用來引入對應的標頭檔案。#include的處理過程很簡單,就是將標頭檔案的內容插入到該命令所在的位置,從而把標頭檔案和當前原始檔連線成一個原始檔,這與複製貼上的效果相同。

 #include有兩種使用方式:

#include

#include "myHeader.h"

使用尖括號< >和雙引號" "的區別在於標頭檔案的搜尋路徑不同,我們將在《細說C語言標頭檔案的路徑》一節中深入探討,請大家先記住:包含標準庫的標頭檔案建議用尖括號,包含自定義的標頭檔案建議用雙引號。

說明:

一個#include命令只能包含一個頭檔案,多個頭檔案需要多個#include命令。

檔案包含允許巢狀,也就是說在一個被包含的檔案中又可以包含另一個檔案。