我在C中编写了一个使用SDL 2.0的小程序,当我无法让SDL_NumJoysticks()
报告函数调用时插入的操纵杆数量时遇到了问题。我相信它报告了在SDL的一个初始化函数中连接的操纵杆的数量(我猜是'SDL_Init()',但我没有证据),然后继续在整个程序的其余部分给你这个数字。这是我一直在使用的简短测试程序:
#include <stdio.h>
#include <SDL2/SDL.h>
int main() {
SDL_Event event;
SDL_Window *window;
short joysticks = 0;
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) {
fprintf(stderr, "SDL_Init error: %s\n", SDL_GetError());
return 1;
}
window = SDL_CreateWindow("Test window", 0, 0, 800, 600, SDL_WINDOW_SHOWN);
if (window == NULL) {
fprintf(stderr, "SDL_CreateWindow error: %s\n", SDL_GetError());
return 1;
}
printf("%s\n", SDL_GetError());
while (1) {
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
printf("%s\n", SDL_GetError());
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
} else if (event.type == SDL_JOYDEVICEADDED) {
printf("Joystick added!\n");
} else if (event.type == SDL_JOYDEVICEREMOVED) {
printf("Joystick removed!\n");
}
}
if (SDL_NumJoysticks() > joysticks) {
printf("Joystick inserted.\n");
joysticks++;
} else if (SDL_NumJoysticks() < joysticks && SDL_NumJoysticks() >= 0) {
printf("Joystick removed.\n");
joysticks--;
} else if (SDL_NumJoysticks() < 0) {
printf("Something went wrong!\n");
SDL_DestroyWindow(window);
SDL_Quit();
return 1;
}
}
return 0;
}
该程序准确报告程序启动时插入的操纵杆数量,但在此之后绝对没有。
SDL_Numjoysticks()的official SDL docs表示“返回成功时附加的操纵杆的数量”。如何让它告诉我在函数调用时插入的操纵杆数量?我在代码中犯了错误,或者这不是SDL_NumJoysticks()
的工作方式吗?
答案 0 :(得分:4)
请务必按照以下步骤查看是否仍有问题:
编辑:我认为应该有用的更多信息: