-
這些不是巨集定義,而是檔案包含。
該巨集定義乙個字串,如下所示:define identifier。
include 包含標準輸入/輸出庫。
include 包含 Windows 庫。
include 包含時間庫。
-
include 包含標頭檔案,下面這三個指令中的一些函式會用到這三個標頭檔案中的函式,標頭檔案一般是你想用到的函式的宣告,相當於下面宣告了你想用到的函式。
-
巨集定義也稱為巨集替換、巨集替換或簡稱“巨集”。
是 C 提供的三個預處理函式之一。
1. 巨集名稱一般大寫。
2.巨集的使用可以提高程式的通用性和易讀性,減少不一致,減少輸入錯誤,便於修改。 例如,陣列大小通常由巨集定義。
3.預處理是編譯前的處理,編譯工作的任務之一是語法檢查,而預處理不做語法檢查。
4.巨集定義的末尾沒有分號。
5.巨集定義寫在函式的大括號外面,作用域是它後面的程式,通常在檔案的開頭。
6. 您可以使用 undef 命令終止巨集定義的範圍。
7. 巨集定義可以巢狀。
8. 字串" "巨集從不包含在 中。
9.巨集定義不分配記憶體,變數定義分配記憶體。
-
C 語言中有兩種型別的巨集定義用法。
1.沒有引數的巨集的定義比較簡單,即用乙個指定的識別符號來表示乙個字串。 它的一般形式是“定義識別符號字串”,例如定義 e。 此方法允許使用者將長字串替換為簡單名稱。
2.帶引數的巨集定義不僅僅是簡單的字串替換,也是引數替換。 其定義的一般形式是; 定義識別符號(巨集名稱)(參數列)字串,其中包含括號中指定的引數。 例如,定義 s(a,b) a*b area=s(3.
-
與類似物件的巨集相比,類似函式的巨集可以以更複雜的方式替換。
函式巨集 sqr 被編譯並用程式填充,因此只要有一種資料可以與雙目操作員相乘,就可以使用函式巨集 *
對於函式定義,每個引數都需要定義自己的資料型別,並且返回值只能為一種型別。 在這方面,該功能更具限制性。
函式在默默無聞的情況下為我們做一些複雜的處理,例如:
另一方面,函式巨集只做巨集和填充程式,不做上述操作。
根據以上特點,函式巨集可能會使程式執行得更快一些,但程式本身可能會變得臃腫
必須謹慎使用功能巨集。 例如,每次在 sqr(a++)a++) 之後,a 的值都會自增兩次。無意中,乙個表示式被執行了兩次,導致程式出現意外結果,我們稱之為巨集***(side effect)
範圍。 你靜態字元 *chh;
static char *ch1;雖然兩個指標指向的位址沒有變化,但你有沒有想過它們指向的記憶體位址是否已經釋放,char chc[10]; 它是本地的,函式已經結束,生命週期已經結束,你正在嘗試使用 void times() 中的指標訪問它。 >>>More