昨天看到一道題,是關於巨集定義的,感覺巨集定義掌握的不太好,今天再複習一遍。
巨集定義是在**翻譯成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語言之關鍵字 巨集定義 條件編譯
區域性變數 特點 注意 區域性變數沒有固定的初始化值,開發中千萬不能使用未初始化的區域性變數 儲存位置 區域性變數儲存在棧中,當作用域結束系統會自動釋放棧中的的區域性變數。特點 如果存在和全域性變數同名的區域性變數,那麼區域性變數會覆蓋全域性變數 注意 全域性變數如果沒有進行初始化,系統缺省會將全域...