为了账号安全,请及时绑定邮箱和手机立即绑定

麻烦求详细解释其中typedef union的用法,具体程序如下~

麻烦求详细解释其中typedef union的用法,具体程序如下~

C++ C
哆啦的时光机 2022-05-13 17:11:27
typedef union _USB_DEVICE_STATUS{byte _byte;struct{unsigned RemoteWakeup:1;// [0]Disabled [1]Enabled: See usbdrv.c,usb9.cunsigned ctrl_trf_mem:1;// [0]RAM [1]ROM};} USB_DEVICE_STATUS;
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

typedef union _USB_DEVICE_STATUS
{
byte _byte;
struct
{
unsigned RemoteWakeup:1;// [0]Disabled [1]Enabled: See usbdrv.c,usb9.c
unsigned ctrl_trf_mem:1;// [0]RAM [1]ROM
};
} USB_DEVICE_STATUS;

相当于
union _USB_DEVICE_STATUS
{
byte _byte;
struct
{
unsigned RemoteWakeup:1;// [0]Disabled [1]Enabled: See usbdrv.c,usb9.c
unsigned ctrl_trf_mem:1;// [0]RAM [1]ROM
};
};
typedef

union _USB_DEVICE_STATUS

USB_DEVICE_STATUS;

这两种写法
就是合起来写和分开写的区别而已
typedef

union 不是一种很特别的用法。
少打几个字符而已。
C++ :
struct,uion, class, enum 定义的名字可以单独使用
一般不会再写,像这样的代码,除非想写和C兼容的代码
C:
struct A{。。。。};
union B{。。。};
enum C{。。。};
A,B,C不是一个类型名字。struct A ,union B,enum C 才是类型名字。
C++:
struct A{...};union B{...};enum C{..};class T{...};
A,B,C,T 都是类型名字,可以直接定义变量。
typedef union _USB_DEVICE_STATUS
{
byte _byte;
struct
{
unsigned RemoteWakeup:1;// [0]Disabled [1]Enabled: See usbdrv.c,usb9.c
unsigned ctrl_trf_mem:1;// [0]RAM [1]ROM
};
} USB_DEVICE_STATUS;

就有些画蛇添足的味道了。

typedef

union _USB_DEVICE_STATUS

USB_DEVICE_STATUS;

可以用 USB_DEVICE_STATUS代替union _USB_DEVICE_STATUS 当作类型名使用;
可以用来定义变量和内置类型区别不大。
所以C语言中,这种用法比较多。
C++中 自定义类型拥有和内置类型差不多的地位,这种用法就少见多了。



查看完整回答
反对 回复 2022-05-16
  • 1 回答
  • 0 关注
  • 341 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信