我想确保我了解内部如何处理SDL事件,事件类型和事件队列。
“SDL_Event”本质上是一个包含所有事件类型的数据结构的联合。
事件队列是这些事件联合的队列。
答案 0 :(得分:4)
它使用了一个技巧,其中SDL_Event联合的所有成员也有一个成员Uint8 type;
作为第一个成员,它与Uint8 type;
相同。
这是有效的,因为它们之前没有填充,它们都共享相同的字节和相同的地址:
像这样:
typedef struct
{
unsigned char type;
int other;
} keyboard;
typedef union
{
unsigned char type;
keyboard key;
} event;
event e;
assert( &e.type == &e.key.type );