Prueba haber si te va esto .
#include <iostream>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
using namespace std;
SDL_Surface *screen;
SDL_Event evento;
Uint8 *tecla;
float tiempo;
int main(int argc,char *argv[]){
SDL_Init(SDL_INIT_VIDEO);
screen=SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
SDL_WM_SetCaption("App1",0);
while(1){
//iniciamos el reloj
tiempo=SDL_GetTicks();
tecla=SDL_GetKeyState(0);
SDL_PollEvent(&evento);
if(tecla[SDLK_ESCAPE])exit(1);
//comprovamos el tiempo
tiempo =SDL_GetTicks()-tiempo;
if(tiempo < 33.33){ //si aun sobra tiempo hasta llegar a los 33.33 ms
SDL_Delay( 33.33-tiempo ); //vete a dormir durante 33.33-x milisegundos 33.33 ms es = 30 fps en 1 s
}
}
}