首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

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

2012-04-15 
有关定义 结构的问题有点晕。。问题1:typedef struct _DEVICE_EXTENSION {PDEVICE_OBJECT pDeviceUNICODE_S

有关定义 结构的问题 有点晕。。
问题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下,重复定义的情况还比较多,不冲突。特别是驱动程序,各写各的,合到一起,重复的厉害。 

热点排行