C語言之巨集定義

2021-06-26 08:20:54 字數 614 閱讀 2772

昨天看到一道題,是關於巨集定義的,感覺巨集定義掌握的不太好,今天再複習一遍。

巨集定義是在**翻譯成0和1之前執行,所以巨集定義比函式的效率高

一、不帶引數巨集定義

格式:#define 巨集名 值

注意:巨集名一般用大寫或者以k開頭

巨集名用在字串中會失效

從巨集定義那一行有效,一直到檔案結束,或者遇到#undef 巨集名

例如:#define count 4

int main()

int a = count; //此時的count會替換為4

char *name = "count";  //此時的count將不會替換為4

return 0;

二、帶引數的巨集定義

注意:巨集定義只會替換引數,所以每個引數和結果都必須用()括起來

例如:#define sum(v1, v2) ((v1)+(v2))

#define pingfang(a) ((a)*(a))

如果不用括號

#define sum(v1, v2) v1+v2

#define pingfang(a) a*a

int main()

所以為了保證結果正確,每個引數和結果都必須加上()

C語言之巨集定義

巨集定義是c提供的三種預處理功能的其中一種,這三種預處理包括 巨集定義 檔案包含 條件編譯。1.不帶引數的巨集定義 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字串 其中的識別符號就是所謂的符號常量,也稱為 巨集名 字串可以是常數 表示式 格式串等。在編譯預處理時,對...

C語言 C語言之列舉定義和巨集定義的技巧1

例舉如下 typedef enum memp t 等同於 typedef enum memp t 解析 1 define mempool name,num,size,desc memp name,將mempool name,num,size,desc 代替為memp name 例如 memp std...

C語言之關鍵字 巨集定義 條件編譯

區域性變數 特點 注意 區域性變數沒有固定的初始化值,開發中千萬不能使用未初始化的區域性變數 儲存位置 區域性變數儲存在棧中,當作用域結束系統會自動釋放棧中的的區域性變數。特點 如果存在和全域性變數同名的區域性變數,那麼區域性變數會覆蓋全域性變數 注意 全域性變數如果沒有進行初始化,系統缺省會將全域...