巨集定義是預編譯功能的一種, 預編譯又稱為預處理, 是為編譯做的預備工作的階段。處理#開頭的指令, 比如拷貝 程式設計客棧#include 包含的檔案**,#define巨集定義的替換,條件編譯等。
使用巨集定義的好處:使用巨集定義的好處:可提高程式的通用性和易讀性,減少不一致性,減少輸入錯誤和便於修改。例如 這個常量,我們有時候會在程式的多個地方使用,如果每次使用都重新定義,一來比較麻煩,二來容易出錯,所以我們可以把 做成巨集定義來使用。
語法說明:
(1)巨集名一般用大寫
(2)使用巨集可提高程式的通用性和易讀性,減ewmuik少不一致性,減少輸入錯誤和便於修改。例如:陣列大小常用巨集定義
(3)預處理是在編譯之前的處理,而編譯工作的任務之一就是語法檢查,預處理不做語法檢查。
(4)巨集定義末尾不加分號;
(5)巨集定義寫在函式的花括號外邊,作用域為其後的程式,通常在檔案的最開頭。
(6)可以用#undef命令終止巨集定義的作用域 程式設計客棧
(7)巨集定義可以巢狀
(8)字串" "中永遠不包含巨集
(9)巨集定義不分配記憶體,變數定義分配記憶體。
定義:#define 巨集名 內容
#define karrlen 10 // oc駝峰命名法:首字元為k,其他單詞首字元大寫
#define arr_len 10 // c語言中的巨集命名規範:所有字母大寫,單詞用下劃線分隔
例如:#define pi 3.1415926
我們就可以使用 pi 來代替 3.1415926 即可:
float r = 0.5;
float area = pi * r * r;
printf("area = %f\n", area);
在程式預編譯階段會把 pi 替換成 3.1415926:
float area = 3.1415926 * r * r;
巨集定義內容很簡單,也很好理解,但是有幾個如下的注意事項:
1、因為巨集定義只是簡單的替換,如果巨集定義的內容有運算的時候,要把每個變數加上括號,以免影響運算的優先順序
比如:#define mul(a, b) (a * b)
使用方法:
mul(3 + 5, 5 + 6) //會替換成 3 + 5 * 5 + 6 = 34
我們希望(3 + 5) * (5 + 6),所以定義巨集定義的時候應該:
#define mul(a, b) ((a) * (b))
2、注意巨集定義後面沒有分號(;),它不是一條語句
3、巨集定義是在程式編譯前期進行替換程式設計客棧,此時程式還沒有編譯
本文標題: 簡單講解c語言中巨集的定義與使用
本文位址: /ruanjian/c/149559.html
C語言中巨集定義與使用分析
事物的難度遠遠低於對事物的恐懼!這個章節我們來談一談c語言中的巨集定義與使用分析,相信每個學過c的都知道,在c中,巨集具有如下三個特性 define是預處理器處理的單元實體之一 define定義的巨集可以出現在 程式的任意位置 define定義之後的 都可以使用這個巨集 而在c語言中,我們常常用 d...
c 語言中的巨集定義
巨集定義 巨集定義是c提供的三種預處理功能的其中一種,這三種預處理包括 巨集定義 檔案包含 條件編譯 1.不帶引數的巨集定義 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字串 其中的識別符號就是所謂的 符號常量,也稱為 巨集名 預處理 預編譯 工作也叫做巨集展開 將巨...
C語言中的巨集定義
下列c 中包含兩種巨集定義,例如 include define max connection 1000 define mng port 5000 define min a,b a b a b define max a,b a b a b int main 方法1 gcc e 引數預編譯 gcc e ...