亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

那DriverExtension->DriverObject=函數地址,這怎么理解?代碼如下:

那DriverExtension->DriverObject=函數地址,這怎么理解?代碼如下:

慕娘9325324 2022-12-21 17:17:17
typedef struct _DRIVER_EXTENSION {struct _DRIVER_OBJECT *DriverObject;} *PDRIVER_EXTENSION;PDRIVER_EXTENSION DriverExtension;請問DriverExtension是一個什么樣的變量?和 *PDRIVER_EXTENSION DriverExtension這樣定義有沒有區別?還是就沒有*PDRIVER_EXTENSION DriverExtension這樣定義的???謝謝樓下如有朋友的回答,現在我已弄清楚了PDRIVER_EXTENSION DriverExtension;的作用是定義一個DriverExtension的結構體變量。我還有一個問題:我如果想引用代碼中的struct _DRIVER_OBJECT *DriverObject;(補充:DriverObject和DriverExtension一樣,也是個結構體變量)。//------------------------補充代碼-------------------------struct _DRIVER_OBJECT{struct _DRIVER_EXTENSION *pDriverExtension;} ;//-------------------------------------------------
查看完整描述

3 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

PDRIVER_EXTENSION 相當于struct _DRIVER_EXTENSION * ,
PDRIVER_EXTENSION DriverExtension;等同于
struct _DRIVER_EXTENSION * DriverExtension;
所以DriverExtension是一個指向struct _DRIVER_EXTENSION 結構體的結構體指針變量。typedef 相當于聲明了一個新類型,用它就可以聲明新的變量。注意typedef 與define的區別,特別是指針方面。
*PDRIVER_EXTENSION DriverExtension這種應該沒有。

查看完整回答
反對 回復 2022-12-25
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

簡化之
typedef struct st{ int i; }*pst;
pst a, b; 等于 struct st * a; struct st * b; b依然是結構指針!
還可以定義 pst * c; 等于struct st ** c;
但無 *pst c; 寫法

區別于
#define pst struct st{ int i; }*
pst a, b; 等于 struct st *a; struct st b; b是結構變量,不再是結構指針了!

結論:#define只進行簡單的替換,typedef則不然!

查看完整回答
反對 回復 2022-12-25
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

typedef struct _DRIVER_EXTENSION 
{
struct _DRIVER_OBJECT *DriverObject;
} *PDRIVER_EXTENSION;
上面這樣做之后
PDRIVER_EXTENSION相當于是struct _DRIVER_EXTENSION *
定義指針的時候直接寫PDRIVER_EXTENSION DriverExtension
相當于是struct _DRIVER_EXTENSION * DriverExtension
所以DriverExtension是指針

查看完整回答
反對 回復 2022-12-25
  • 3 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號