bien, he cambiado el tipo de retorno, ahora esa parte "va bien", ahora, usando el depurador de C::B (gdb) he visto que unas lineas despues salta un seg. fault, y no lo comprendo (se lo que es, lo que no se es la causa). a continuacion el codigo problematico:
Código C:
Ver originalSDL_Surface *imagen, *imagenes[IMAGENES];
carga_imagenes(imagenes);
SDL_Rect posicion;
posicion.x = 0;
posicion.y = 0;
posicion.w = imagenes[PERSONAJE]->w; //segmentation fault
posicion.h = imagenes[PERSONAJE]->h;
lo de la constante, creo que en principio no tendria que importar, ya que el preprocesador sutituye antes de la compilacion TIZA por 12, y hara lo mismo con IMAGENES. muchas gracias, de verdad ;) .