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