gpt4 book ai didi

c++ - 在 'SDL_PollEvent'中测试 'while'的正确方法

转载 作者:太空狗 更新时间:2023-10-29 23:50:30 24 4
gpt4 key购买 nike

如手册所述,SDL_PollEvent 函数“如果有未决事件则返回 1,如果没有可用事件则返回 0。” ,这就是我们使用测试 SDL_PollEvent(&e)!=0 的原因(其中 eSDL_Event)。

但是,如何使用这个测试:!SDL_PollEvent(&e)?它应该可以工作,但显然它会引起一些问题。

这里是一个代码示例:

    #include <SDL2/SDL.h>
#include <stdio.h>

int main(int argc, char* args[]){
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* window = SDL_CreateWindow("Hello",SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 100, 100, SDL_WINDOW_SHOWN);
SDL_Event e;
int quit=0;
while(!quit){
//Here the test
while (!SDL_PollEvent(&e)){
if (e.type==SDL_QUIT)
quit=1;
else if ( e.type == SDL_KEYDOWN )
printf( "Hello\n" );
}
}
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}

这段代码应该做的是打开一个新窗口并在每次按下某个键时在控制台中打印“Hello”。这段代码在测试 SDL_PollEvent(&e)!=0 时工作正常,但是当我使用测试 !SDL_PollEvent(&e) 时它不会读取 SDL_KEYDOWN 事件(但它确实会在 while 中进入并毫无问题地处理 SDL_QUIT 事件)。
为什么会出现这种行为?

最佳答案

while (!SDL_PollEvent(&e))

需要:

while (SDL_PollEvent(&e))

如果它应该与 SDL_PollEvent(&e) != 0 相同

因为 !SDL_PollEvent(&e) 等同于调用 while(0)

关于c++ - 在 'SDL_PollEvent'中测试 'while'的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29706885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com