/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Discordias con gcc

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
ragnar131



Registrado: 16 Nov 2007
Mensajes: 5

MensajePublicado: 16/11/2007 4:33 pm
Título: Discordias con gcc

Hola!
Veréis, como mucha gente, soy nuevo en C, y la verdad es que me he estado apañando bastante bien yo sólo (tirando de ayudas como la del buen curso que es accesible desde esta página.
Estoy programando un pequeño juego de las torres de Hanoi con las librerías de Xlib en Linux.
La pega viene aquí:
Tengo dos ficheros, uno que es la que se encarga de la parte gráfica (realiza todas las funciones necesarias de dibujo), y otro que realiza funcionalidades como por ejemplo, salir.
Concretamente he programado una función que me devuelva 1, si las coordenadas que le paso están dentro de los límites del cuadrado del "botón" salir. Parece fácil:
int salir(int x, int y){
int i = 0;
if ((x>= 525 && x<= 565)&&(y>=20 && y<= 35)){
//Estamos en la zona del botón Salir;
i = 1;
}
return i;
}//salir

Vale, a comentar, que encima de esta función, hay una de tipo void, que funciona perfectamente, y que es totalmente independiente de esta.

Cuando desde el fichero gráfico hago esta llamada:
if(1==salir(cor_x,cor_y)){
printf("Escogida la opción salir.\n");
//XUnloadFont(display, font_info->fid);
XFreeGC(display, gc);
XCloseDisplay(display);
exit(1);
}
el compilador me dice:
torres.c: En la función ‘main’:
torres.c:134: error: el objeto ‘salir’ llamado no es una función

Como mención final, al compilar hago gcc juego.c torres.c -o torres ...(aquí enlazo con liberías de Xlib).

¿Alguna idea? Porque a mí me parece que está bien, y no entiendo que quiere decir con eso de que no es una función, qué iba a ser sino?

En fin, gracias por leer y esto, y si podéis ayudarme os lo agradeceré mucho.
Recibid un cordial saludo.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3770
Ubicación: Mexico

MensajePublicado: 16/11/2007 4:56 pm
Título:

Es dificil encontrar el error si no presentas el codigo fuente de ambas unidades y los archivos de inclusion que utilizas.

El error posiblemente se deba a que declaras una variable con el mismo nombre de la funcion. Otra posibilidad seria la falta de prototipos pero en ese caso se generaria el error "funcion redefinida ...".

Lo mejor como ya te comente es publicar el codigo fuente completo del programa y tambien compilar este en el modo mas estricto que permite GCC ya que esa es la forma mas facil de detectar errores. Para esto ultimo tienes que llamar a gcc en la forma:
Código:
gcc -c -ansi -pedantic -Wall -O nombre.c


Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
ragnar131



Registrado: 16 Nov 2007
Mensajes: 5

MensajePublicado: 16/11/2007 6:00 pm
Título:

Hola!
Parece que el post que acabo de escribir no lo he enviado de manera correcta.
Efectivamente, hay una variable y una función que se llaman de igual forma.
Gracias, me habría llevado rato darme cuenta.
Para una próxima ocasión publicaré el código fuente, aunque si no lo he hecho es porque me parecía excesivo para un post (sobre todo por la cantidad de código innecesario o ruido que tiene).

Por curiosidad, esa forma de llamar al compilador... ¿podrías decirme qué significan los parámetros? ¿qué fichero ejecutable generaría?¿nombre?(digo nombre, poque está a la derecha de -O y aparecere el fichero nombre.c).

En fin, gracias por todo.
Recibe un saludo, Aitor.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3770
Ubicación: Mexico

MensajePublicado: 16/11/2007 8:45 pm
Título:

La descripcion completa de las opciones la puedes consultar revisando la "manpage" de gcc. En breve "-c" indica que solo se compile sin realizar la vinculacion, "-ansi -pedantic -Wall" indica que se compile de la forma mas estricta y "-O" se necesita para que gcc advierta en el caso de variables utilizadas sin antes ser declaradas.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
ragnar131



Registrado: 16 Nov 2007
Mensajes: 5

MensajePublicado: 17/11/2007 7:28 am
Título:

Gracias por todo, miraré entonces las páginas del manual.
Atentamente, Aitor.
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com