这是错误所关注的开关案例:
switch(event.type)
{
case SDL_Quit:
for (int i=0;i<NUMMENU;i++)
SDL_FreeSurface(menus[i]);
return 1;
case SDL_MOUSEMOTION:
x=event.motion.x;
y=event.motion.y;
for(int i=0;i<NUMMENU;i++)
{
if(x>=position[i].x && x<=position[i].x+position[i].w && y>=position[i].y && y<=position[i].y+position[i].h)
{
if(!selected[i])
{
selected[i]=1;
SDL_FreeSurface(menus[i]);
menus[i]=TTF_RenderText_Solid(font,labels[i],color[1]);
}
}else{
if(selected[i])
{
selected[i]=0;
SDL_FreeSurface(menus[i]);
menus[i]=TTF_RenderText_Solid(font,labels[i],color[0]);
}
}
}
case SDL_MOUSEBUTTONDOWN:
x=event.button.x;
y=event.button.y;
for(int i=0;i<NUMMENU;i++)
if(x>=position[1].x && x<=position[1].x+position[i].w && y>=position[i].y && y<=position[i].y+position[i].h)
{
for(int j=0;j<NUMMENU;j++)
SDL_FreeSurface(menus[j]);
return i;
}
break;
case SDL_KEYDOWN:
if(event.key.keysym.sym==SDLK_ESCAPE)
{
for(int i=0;i<NUMMENU;i++)
SDL_FreeSurface(menus[i]);
return 0;
}
}
我有这个错误,我不知道为什么以及如何解决这个问题。我试图添加休息;在每个案件的最后但没有结果。
如果您需要更多代码或更多信息,我可以给予精确度。
此致
答案 0 :(得分:5)
您使用的是void SDL_Quit(void)
功能,而不是第3行的SDL_QUIT
事件类型。
case SDL_Quit:
^^^^^^^^
for (int i=0;i<NUMMENU;i++)
SDL_FreeSurface(menus[i]);
return 1;
答案 1 :(得分:0)
您的case
标签(例如SDL_Quit/SDL_MOUSEMOTION...
)不能是整数常量。例如,如果它们是字符标签,则它是有效的,但不是像const char *
字符串文字那样不是整数常量的字符串。