当前位置: 代码迷 >> 驱动开发 >> 有关定义 结构的有关问题 有点晕。
  详细解决方案

有关定义 结构的有关问题 有点晕。

热度:67   发布时间:2016-04-28 10:59:43.0
有关定义 结构的问题 有点晕。。
问题1:

typedef struct _DEVICE_EXTENSION {
PDEVICE_OBJECT pDevice;
UNICODE_STRING ustrDeviceName; //设备名称
UNICODE_STRING ustrSymLinkName; //符号链接名
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;


typedef struct _DEVICE_EXTENSION {
PDEVICE_OBJECT pDevice;
UNICODE_STRING ustrDeviceName; //设备名称
UNICODE_STRING ustrSymLinkName; //符号链接名
} DEVICE_EXTENSION;
typedef struct _DEVICE_EXTENSION *PDEVICE_EXTENSION;

两种定义一样嘛?
问题2:
上面 定义的结构中 DEVICE_EXTENSION, *PDEVICE_EXTENSION;是_DEVICE_EXTENSION 类型的变量还是类型的别名?
问题3:
_DEVICE_EXTENSION 结构名字再别的文件中已经定义了 不影响吗?
我看书看了好几遍 都说是定义别名的 但还是不太清楚 
不加typedef 定义结构的时候 {}后的是变量名 那加了typedef 后{}后的是变量 还是 新类型名?

菜鸟的问题 希望大侠耐心回答!

------解决方案--------------------
DEVICE_EXTENSION, PDEVICE_EXTENSION都是类型的别名,typedef这个关键字可以这样理解,任何定义变量的语句前面加上这个typedef,后面的变量就成了别名了。
struct _DEVICE_EXTENSION {
PDEVICE_OBJECT pDevice;
UNICODE_STRING ustrDeviceName; //设备名称
UNICODE_STRING ustrSymLinkName; //符号链接名
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;这个定义了一个结构体变量,一个结构体指针。然后前面加上typedef变量就成了别名了。
------解决方案--------------------
问题1: 两种定义是完全一样的;

问题2: 同意LS

问题3: 在LINUX下,重复定义的情况还比较多,不冲突。特别是驱动程序,各写各的,合到一起,重复的厉害。 
  相关解决方案