先貼上一幅編譯器編譯c語言程式的圖
此處預處理器會對巨集展開(預處理器將源程式檔案中出現的對巨集的引用展開成相應的巨集定義)。(預處理器的其他功能不再贅述)
兩種定義:
1.簡單巨集定義:#define 《巨集名》 《字串》
#define max 100;
經常用作陣列長度。
2.帶引數的巨集定義:#define 《巨集名》 (《參數列》) 《巨集體》
#define f(x) (x);
此處x最好加上括號,以免外部呼叫時出錯。
————————————————————————
typedef
1.定義一種新型別代替原有型別:
typedef long int lint;
2.代表結構體:
typedef struct
student;
然後用新型別名定義變數:
student topstudent;
typedef struct和struct的區別:
typedef struct tagmystruct
mystruct;
上面的tagmystruct是識別符號,mystruct是變數型別(相當於(int,char等))。
這語句實際上完成兩個操作:
1) 定義乙個新的結構型別
struct tagmystruct
;分析:tagmystruct稱為「tag」,即「標籤」,實際上是乙個臨時名字,不論是否有typedefstruct 關鍵字和tagmystruct一起,構成了這個結構型別,這個結構都存在。
我們可以用struct tagmystruct varname來定義變數,但要注意,使用tagmystruct varname來定義變數是不對的,因為struct 和tagmystruct合在一起才能表示乙個結構型別。
2) typedef為這個新的結構起了乙個名字,叫mystruct。
typedef struct tagmystruct mystruct;
因此,mystruct實際上相當於struct tagmystruct,我們可以使用mystruct varname來定義變數。
2.typedef struct tagmystruct
mystruct;
部分參考:
C語言中typedef與 define巨集的區別
1.typedef最簡單的解釋就是給型別取別名,表面上理解為把第二個引數等同於第乙個引數,然後以後定義某個變數時,可以直接使用第乙個變數就可以了 typedef unsigned short uint16 t2.2.define是巨集定義,用來簡單的替換,這個替換的過程是發生在程式預編譯過程,它只會...
C語言中的typedef
typedef是用於定義新的型別名,在程式設計中可以用typedef來定義新的型別名來代替已有的型別名 格式 typedef 已有型別名 新的型別名 通俗點說,就是為已有的型別取別名,例如 老鼠?又叫耗子?老鼠也是它,耗子也是他 但不能取新的型別名,也就是說不能憑空造出來乙個型別,必須是在已有的型別...
C語言中的typedef
typedef 的講解與應用例項 用法一 型別的重定義 typedef unsigned char u8 typedef char pchar 這裡的第一句是給unsigned char型別重新起個別名,叫 u8 應用時看到u8 定義的變數,就相當於unsigned char 型別,兩者是完全等價的...