我希望每隔三秒钟调用一次函数。在objective-c中,我会这样做:
NSTimer timer = [NSTimer timerWithInterval:3 sel:@selector(my_function)...];
如何使用SDL和c ++执行此操作?我试过这个:
SDL_TimerID myTimer = SDL_AddTimer(3,my_function(), NULL);
但我收到的错误是:没有匹配函数来调用SDL_AddTimer。
有什么问题?
答案 0 :(得分:0)
第一个参数应该是3000,因为文档将单位列为毫秒。
修改强> 如果原型不匹配,我得到:
〜/ sdl $ g ++ example.cpp -lSDL example.cpp:在函数'int main(int, char **)':example.cpp:13:59:错误:无效转换为'void (
*
)()'到'SDL_NewTimerCallback {aka unsigned int(*
)(unsigned int, void *)}' [-fpermissive] /usr/include/SDL/SDL_timer.h:109:37:错误: 初始化'_SDL_TimerID * SDL_AddTimer的参数2(Uint32, SDL_NewTimerCallback,void *)'[-fpermissive]
这表明函数原型必须是:
unsigned int my_function(unsigned int, void * )
编译:
#include <SDL/SDL.h>
unsigned int my_function(unsigned int interval, void * param)
{
return interval; // repeat the timer
}
int main(int argc, char ** argv)
{
SDL_TimerID myTimer = SDL_AddTimer(3000, my_function, NULL);
return 0;
}