零基礎入門學習C語言010講 預處理(3)

2021-09-20 13:13:28 字數 1611 閱讀 4889

儘管我們很熟悉,但對檔案包含命令還要說明以下幾點:

1. 乙個include命令只能指定乙個被包含檔案,若有多個檔案要包含,則需用多個include命令。

2. 檔案包含允許巢狀,即在乙個被包含的檔案中又可以包含另乙個檔案。

3. 包含命令中的檔名可以用雙引號括起來,也可以用尖括號括起來。例如以下寫法都是允許的:

#include"stdio.h"#include

但是這兩種形式是有區別的:使用尖括號表示在包含檔案目錄中去查詢(包含目錄是由使用者在設定環境時設定的),而不在源檔案目錄去查詢;

使用雙引號則表示首先在當前的源檔案目錄中查詢,若未找到才到包含目錄中去查詢。使用者程式設計時可根據自己檔案所在的目錄來選擇某一種命令形式。

預處理程式提供了條件編譯的功能。可以按不同的條件去編譯不同的程式部分,因而產生不同的目標**檔案。這對於程式的移植和除錯是很有用的。

條件編譯有三種潛規則,下面分別介紹:

它的功能是,如果識別符號已被 #define命令定義過則對程式段1進行編譯;否則對程式段2進行編譯。

如果沒有程式段2(它為空),本格式中的#else可以沒有,即可以寫為:

1. 預處理功能是c語言特有的功能,它是在對源程式正式編譯前由預處理程式完成的。程式設計師在程式中用預處理命令來呼叫這些功能。

2. 巨集定義是用乙個識別符號來表示乙個字串,這個字串可以是常量、變數或表示式。在巨集呼叫中將用該字串代換巨集名。

3. 巨集定義可以帶有引數,巨集呼叫時是以實參代換形參。而不是「值傳送」。

4. 為了避免巨集代換時發生錯誤,巨集定義中的字串應加括號,字串**現的形式引數兩邊也應加括號。

5. 檔案包含是預處理的乙個重要功能,它可用來把多個原始檔連線成乙個原始檔進行編譯,結果將生成乙個目標檔案。

6. 條件編譯允許只編譯源程式中滿足條件的程式段,使生成的目標程式較短,從而減少了記憶體的開銷並提高了程式的效率。

7. 使用預處理功能便於程式的修改、閱讀、移植和除錯,也便於實現模組化程式設計。

零基礎入門學習C語言010講 預處理(1)

在前面各章中,已多次使用過以 號開頭的預處理命令。如包含命令 include 巨集定義命令 define pi 3.1415926等。在源程式中這些命令都放在函式之外,而且一般都放在原始檔的前面,它們稱為預處理部分。無參巨集的巨集名後不帶引數。其定義的一般形式為 define 識別符號 字串 其中的...

零基礎入門學習C語言010講 預處理(2)

語言允許巨集帶有引數。在巨集定義中的引數稱為形式引數,在巨集呼叫中的引數稱為實際引數。對帶引數的巨集,在呼叫中,不僅要巨集展開,而且要用實參去代換形參。帶參巨集定義的一般形式為 define 巨集名 形參表 字串 帶參巨集呼叫的一般形式為 巨集名 實參表 例如 define m y y y 3 y ...

零基礎入門學習C語言004講 順序程式設計(2)

scanf函式稱為格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指定的變數之中。1.scanf函式的一般形式 scanf函式是乙個標準庫函式,它的函式原型在標頭檔案 stdio.h 中,與printf函式相同,語言也允許在使用scanf函式之前不必包含stdio.件。scanf函式的一般形式...