2013-06-11 5 views
0

Je souhaite qu'une fonction soit appelée toutes les trois secondes. Dans l'objectif-c je ferais comme ceci:Effectuer une fonction avec un intervalle de temps SDL/C++

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

Comment est-ce que je fais ceci avec SDL et C++? Je l'ai essayé ceci:

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

Mais je viens d'obtenir une erreur qui dit: Pas de fonction concordante pour appel à SDL_AddTimer.

Qu'est-ce qui ne va pas?

+0

la solution affichée fonctionne-t-elle? –

Répondre

0

Le premier paramètre doit être 3000 car la documentation liste les unités en millisecondes.

modifier: Si le prototype ne correspond pas que je reçois:

~/sdl$ g++ example.cpp -lSDL example.cpp: In function ‘int main(int, char**)’: example.cpp:13:59: error: invalid conversion from ‘void (*)()’ to ‘SDL_NewTimerCallback {aka unsigned int (*)(unsigned int, void*)}’ [-fpermissive] /usr/include/SDL/SDL_timer.h:109:37: error: initializing argument 2 of ‘_SDL_TimerID* SDL_AddTimer(Uint32, SDL_NewTimerCallback, void*)’ [-fpermissive]

Ce qui montre que le prototype de la fonction doit être:

unsigned int my_function(unsigned int, void *) 

Cette compile:

#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; 
} 
+0

oui je l'inclut mais il dit toujours la même chose –

+0

Pouvez-vous copier/coller l'erreur de compilation réelle? Je m'attendais à la modification de my_function pour le réparer. Toutes les suggestions du compilateur liées à une discordance aideront aussi. –

+0

la chose que j'ai écrite dans la question est la seule chose que j'ai obtenu –

Questions connexes