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这种应该没有。

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则不然!

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是指针
添加回答
举报