3 回答

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
PDRIVER_EXTENSION 相當(dāng)于struct _DRIVER_EXTENSION * ,
PDRIVER_EXTENSION DriverExtension;等同于
struct _DRIVER_EXTENSION * DriverExtension;
所以DriverExtension是一個(gè)指向struct _DRIVER_EXTENSION 結(jié)構(gòu)體的結(jié)構(gòu)體指針變量。typedef 相當(dāng)于聲明了一個(gè)新類型,用它就可以聲明新的變量。注意typedef 與define的區(qū)別,特別是指針?lè)矫妗?br/>*PDRIVER_EXTENSION DriverExtension這種應(yīng)該沒(méi)有。

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
簡(jiǎn)化之
typedef struct st{ int i; }*pst;
pst a, b; 等于 struct st * a; struct st * b; b依然是結(jié)構(gòu)指針!
還可以定義 pst * c; 等于struct st ** c;
但無(wú) *pst c; 寫法
區(qū)別于
#define pst struct st{ int i; }*
pst a, b; 等于 struct st *a; struct st b; b是結(jié)構(gòu)變量,不再是結(jié)構(gòu)指針了!
結(jié)論:#define只進(jìn)行簡(jiǎn)單的替換,typedef則不然!

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
typedef struct _DRIVER_EXTENSION
{
struct _DRIVER_OBJECT *DriverObject;
} *PDRIVER_EXTENSION;
上面這樣做之后
PDRIVER_EXTENSION相當(dāng)于是struct _DRIVER_EXTENSION *
定義指針的時(shí)候直接寫PDRIVER_EXTENSION DriverExtension
相當(dāng)于是struct _DRIVER_EXTENSION * DriverExtension
所以DriverExtension是指針
添加回答
舉報(bào)