以时间间隔SDL / c ++执行功能

时间:2013-06-11 21:39:21

标签: c++ timer sdl

我希望每隔三秒钟调用一次函数。在objective-c中,我会这样做:

NSTimer timer = [NSTimer timerWithInterval:3 sel:@selector(my_function)...];

如何使用SDL和c ++执行此操作?我试过这个:

SDL_TimerID myTimer = SDL_AddTimer(3,my_function(), NULL);

但我收到的错误是:没有匹配函数来调用SDL_AddTimer。

有什么问题?

1 个答案:

答案 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;
}