gpt4 book ai didi

c - 为什么 SDL2 枚举具有很高的意外值?

转载 作者:太空宇宙 更新时间:2023-11-04 05:16:25 24 4
gpt4 key购买 nike

我在调试 SDL2 程序时遇到困难:当我打印诸如 SDL_EventTypeSDL_Keycode 的枚举值时,显示的值非常高并且与每个枚举值不同其他。例如,事件类型 SDL_KEYDOWN 对应于 768 - 而枚举 SDL_EventType 中没有 769 元素!

我做了一点测试,看看这种奇怪的行为是否是我的程序造成的,但这种行为仍然存在:

#include <stdio.h>
#include "SDL.h"

int main(int argc, char *argv[])
{
SDL_Init(SDL_INIT_VIDEO);
SDL_Event event;
SDL_Window *wind = SDL_CreateWindow("ee", 700, 100, 300, 300, 0);
while (SDL_PollEvent == 1)
SDL_PollEvent(&event);
while (1)
{
SDL_PollEvent(&event);
if (event.type == SDL_QUIT || event.key.keysym.sym == SDLK_ESCAPE)
break;
fprintf(stderr, "type = %d\n", event.type);
event.type = 0;
SDL_Delay(15);
}
printf("%d\n", SDL_GetTicks());
SDL_Quit();
return 0;
}

打印SDLK_DOWNSDL_MOUSEMOTION等关键字输出的结果与之前的程序相同,是连贯的。但为什么这些值与枚举类型不一致?

最佳答案

如果您查看 SDL_events.h,您会看到如下内容:

/* Window events */
SDL_WINDOWEVENT = 0x200, /**< Window state change */
SDL_SYSWMEVENT, /**< System specific event */

/* Keyboard events */
SDL_KEYDOWN = 0x300, /**< Key pressed */
SDL_KEYUP, /**< Key released */

所以它们只是用这样的价差值定义的。这背后的基本原理是允许在不破坏向后兼容性的情况下添加新值,同时保持某些枚举器值分组。

关于c - 为什么 SDL2 枚举具有很高的意外值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48291260/

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