define的用法及與typedef的區別

2021-07-27 09:44:59 字數 1218 閱讀 5325

1、define--(無引數巨集定義)用法

一般形式為:#define

識別符號 字串

(1)"#"表示其為預處理命令,凡是以"#"開頭的都是預處理命令;"define"為巨集定義命令;"識別符號"為所定義的巨集名;"字串"可以是常數、表示式、字串等。

(2)除了經常用到的如"#define maxnum 100"之外,還有其它多種靈活的用法,如"#define m (y*y+3*y)",注意,的表示式中()是必須的,否則在進行如"2*m+2"的運算

時就會出現錯誤。

(3)末尾不需要分號(如果加分號,會連同分號一起代換)。

(4)define只是做簡單的文字替換。

(5)作用域為巨集定義開始,到源程式結束,終止定義域可用"#undef m".

(6)巨集名如果以字串的形式被呼叫,則不做替換,如printf("i m o")。

(7)可以巢狀進行定義,如

#define pi 3.14

#define s pi*r*r

(8)習慣上把巨集名寫為大寫的,以區別普通的變數。

2、define和typedef的區別

define巨集定義是在預處理完成的,typedef實在編譯時處理的,typedef不是簡單的代換,而是對型別說明符的重新命名。

例如:#define p1 int*

typedef int* p2;

p1 a, b;//相當於int* a, b,此時a是int指標,b是int整數。

p2 a, b;//表示a和b都是int指標。

3、define(帶引數巨集定義)用法

一般形式為:#define 巨集名(形參) 字串

最長見的 #define max(a,b) (a>b)?a:b

(1)巨集名和形參之間不能有空格。如果上式寫為 #define max (a,b) (a>b)?a:b,則max就表示整個後面的部分了。

(2)帶參巨集定義的形參是不分配記憶體的。

(3) 在巨集定義中的形參是識別符號,而巨集呼叫中的實參可以是表示式。

#define sq(y) (y)*(y)

main()

上例中第一行為巨集定義,形參為y.程式第七行巨集呼叫中實參為a+1,是乙個表示式,在巨集展開時,用a+1代換y,再用(y)*(y) 代換sq,得到如下語句 :

sq=(a+1)*(a+1);

這與函式的呼叫是不同的,函式呼叫時要把實參表示式的值求出來再賦予形參。而巨集代換中對實參表示式不作計算直接地照原樣代換。

typedef與define的用法及區別

關鍵字 typedef 顧名思義型別定義,這裡應該理解為型別重新命名,從而增強程式的可讀性。例如 將unsigned int 重新命名為uint 32,所以uint 32也是乙個型別名 typedef unsigned int uint 32 intmain 關鍵字define 定義乙個識別符號來表...

Define的用法及說明

1.define在英文中是下定義的意思 2.所謂的符號常量就是使用define命令定義,用識別符號表示的常量,通常又稱為巨集常量。在定義符號常量時所指定的識別符號又成為巨集名,通常用大寫表示來區分。例 define 識別符號 常量 define pi 3.14 在編譯預處理時 表示在編譯處理這個程式...

define中 與 的神奇用法

2009 01 06 10 07 05 分類 linux學習 舉報 字型大小訂閱 本文整理自csdn。define f a,b a b define d a a define s a d a void main void 輸出結果 f a,b ab分析 把兩個符號連起來 a指把a當成符號,就是把 後...