Dos cosas:
NO puedes tener código ejecutable FUERA de una función tal como lo expresas en tu main.cpp
dest=tam(dest,100,100,30,30);
Eso tiene que estar en una función si o si, bien sea main o la que sea, pero NUNCA suelto.
Por otro lado, espero que no lo estés haciendo tal cual lo pones, porque sino obviamente, dest no apunta a nada, y la función no crea ningún punto para que dest lo reciba.
Deberías mirarte la teoría de punteros, y antes de empezar a usar la SDL entender qué haces.
Opciones?
struct SDL_Rect* tam(struct SDL_Rect *fig,int a,int b,int c,int d){
fig
=(fig
*) malloc(sizeof(struct SDL_Rect
));if(fig!=NULL){
fig->x=a;
fig->y=b;
fig->w=c;
fig->h=d;
}
else {
// estás jodido
}
return fig; // tanto da si apunta a algo como si apunta a null, tu función devuelve un puntero
}
o bien
SDL_Rect *dest=NULL;
dest
=(struct SDL
:Rect
*)malloc(sizeof(struct SDL_Rect
));if(dest!=NULL){
dest=tam(dest,100,100,30,30); // el dest= sobraría. Al fin y al cabo qué sentido tiene recibir el
//mismo puntero que le pasas?
}
else {
// estás jodido
}