今天在SDK中看到了這麼個寫法:
typedef void(CALLBACK *DisplayCBFun)(
long nPort,
char *pBuf,
long nSize,
long nWidth,
long nHeight,
long nStamp,
long nType,
long nReceved
);
有點不解。於是查資料,以typedef void(*Fun)(void);爲例
在我的印象裏,#define和typedef,從用法來看,感覺差別不大
比如、#defineINT int;
typedef int INT;
直覺上來說,都是用某個關鍵字代替了另一個關鍵字
但最開頭的寫法,就沒法用這個感覺來解釋了
於是我換了一個思路來理解這個typedef
我們首先看常規的變量定義:
int INT//定義了一個名爲INT的int型變量。
char *c//定義了一個名爲c的char型指針變量
void(*Fun)(void);//定義了一個名爲Fun的,返回值爲void,無參數的函數指針
加上typedef以後,就可以理解爲,原來的變量名變成了自己本身對應的類型名
如typedef int INT ;INT就代表了int類型
c就變成了char*
typedef void(*Fun)(void); Fun就代表了“返回值爲void,無參數的函數指針”型