我有这个 SDL2 C 代码,它试图检查用户是否按下鼠标:
struct SCGUI_Mouse {
char button[5]; //SDL_BUTTON_LEFT, SDL_BUTTON_MIDDLE, SDL_BUTTON_RIGHT, SDL_BUTTON_X1, SDL_BUTTON_X2
};
extern struct SCGUI_Mouse mouse;
//...
while (SDL_PollEvent(&event)) {
switch (event.type) {
case SDL_KEYDOWN:
input.keys[event.key.keysym.scancode] = true; //Key input works
break;
case SDL_KEYUP:
input.keys[event.key.keysym.scancode] = false;
break;
case SDL_MOUSEBUTTONDOWN:
mouse.button[event.button] = true; //Mouse input does not work: error (array subscript is not an integer)
break;
case SDL_MOUSEBUTTONUP:
mouse.button[event.button] = false;
break;
}
}
但是,根据文档,由于 event.button 是 Uint8 类型,我无法将其设置为数组索引,因为它不是整数。我尝试使用
mouse.button[(int) event.button]
转换类型,但这只会给我错误“在需要整数的地方使用聚合值。”
我可以在这里做什么来解决这个问题?