【发布时间】:2015-12-04 05:50:18
【问题描述】:
祝大家今天好。
我正在尝试制作自己的游戏杆,所以我一直在寻找参考资料,然后我从 v-usb wiki 页面 (http://vusb.wikidot.com/project:usbjoy) 找到了 usbjoy 项目。
然后,我从网站的 zip 文件中的 common.h 中找到了按钮的数据结构。
typedef struct
{
uchar x; //Byte-0, ユ (0...255)
uchar y; //Byte-1, Y (0...255)
uchar z; //Byte-2, Handle-1 (0...255)
uchar p; //Byte-3, Handle-2 (0...255)
union {
uchar buttons; //Byte-4, buttons 8
struct
{
uchar btn1: 1; //0, 1
uchar btn2: 1; //0, 1
uchar btn3: 1; //0, 1
uchar btn4: 1; //0, 1
uchar btn5: 1; //0, 1
uchar btn6: 1; //0, 1
uchar btn7: 1; //0, 1
uchar btn8: 1; //0, 1
} b;
} u;
union {
uchar but; //Byte-5, buttons 4
struct
{
uchar btn9: 1; //0, 1
uchar btn10: 1; //0, 1
uchar btn11: 1; //0, 1
uchar btn12: 1; //0, 1
uchar padding: 4; //Not use
} b;
} w;
} t_PsxController;
我知道 x 和 y 用于左侧模拟垫,z 和 p 用于右侧模拟垫,u 和 w 用于按钮。我的问题是:
- 为什么将 u 和 w 声明为联合?
- 是否会使用联合中的结构?
- t_PsxController 的大小是多少?
- 最后,
uchar btn1: 1;中的冒号及其下方的代码是什么意思?
【问题讨论】: