• Miércoles 20 de Noviembre de 2024, 12:23

Autor Tema:  ¿Problemas con las cabeceras?  (Leído 1931 veces)

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
¿Problemas con las cabeceras?
« en: Jueves 2 de Julio de 2009, 12:24 »
0
¡Hola a tod@s!  :hola:

Cada vez que intento dividir mi código en varios ficheros, me topo con lo mismo... Espero que alguien me pueda aclarar como usar los ficheros de cabecera de forma correcta, porque me parece que lo estoy haciendo mal...  :huh:

Uso gcc en Windows con Dev-Cpp (MinGW creo recordar)...

Código: C
  1. #include "global.h"
  2. #include "tablero.h"
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.     tTablero *tablero;
  7.     tFicha fichas[32];
  8.    
  9.     IniciarTablero(tablero);
  10.     IniciarFichas(fichas);
  11.    
  12.     ColocarFichasEnTablero(tablero, fichas);
  13.    
  14.     system("PAUSE");   
  15.     return 0;
  16. }
  17.  
Me marca error en la línea 2  :mellow: , función ColocarFicha():

Código: C
  1. #ifndef YACHESS_TABLERO
  2. #define YACHESS_TABLERO
  3.  
  4. #include "global.h"
  5. #include "ficha.h"
  6.  
  7. tBool IniciarTablero(tTablero* tablero);
  8. tBool ColocarFichasEnTablero(tTablero tablero, tFichas fichas[]);
  9.  
  10. #endif
  11.  

Código: Text
  1. 8 tablero.h syntax error before "tFichas"
  2.  

 :brickwall:  :hitcomp:  :no:  :alien:

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: ¿Problemas con las cabeceras?
« Respuesta #1 en: Jueves 2 de Julio de 2009, 13:01 »
0
Asumo que la cabecera que dejaste es tablero.h, no tenemos global ni fecha, si dejas una minima expresion compilable del problema es mas facil de analizar. Igual por lo pronto supongo que lo rojo sobra y lo azul falta:

tBool ColocarFichasEnTablero(tTablero *tablero, tFichas fichas[]);



PD. La variable tablero del main siempre sera un puntero indefinido.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: ¿Problemas con las cabeceras?
« Respuesta #2 en: Jueves 2 de Julio de 2009, 13:42 »
0
Cita de: "Eternal Idol"
tBool ColocarFichasEnTablero(tTablero *tablero, tFichas fichas[]);

Pfff, ya me vale...  -_-  -_-   :brickwall:  :lol:

Cita de: "Eternal Idol"
si dejas una minima expresion compilable del problema es mas facil de analizar

Iba a incluir un comprimido con los ficheros y se me olvidó...  -_-  -_-  :no:  :bad:

Cita de: "Eternal Idol"
La variable tablero del main siempre sera un puntero indefinido.
IniciarTablero(tablero) la inicializa :)

En fin, vaya despistes llevo hoy  :lol: ¡Muchas gracias!

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: ¿Problemas con las cabeceras?
« Respuesta #3 en: Jueves 2 de Julio de 2009, 13:49 »
0
Me sigue dando errores :P

Código: Text
  1. main.c In function `ColocarFicha':
  2. 5 main.c syntax error before '{' token
  3. 9 main.c syntax error before "IniciarTablero"
  4.  
:mellow:

[attachment=0:30unxhd6]yachess.zip[/attachment:30unxhd6]
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: ¿Problemas con las cabeceras?
« Respuesta #4 en: Jueves 2 de Julio de 2009, 14:28 »
0
Cita de: "m0skit0"
IniciarTablero(tablero) la inicializa :)

En realidad no, tenes una variable local que es un puntero (tablero), y para que alguna funcion externa pudiera cambiarle el valor deberias pasar su direccion y no lo estas haciendo. Cualquier asignacion que hagas en IniciarTablero con el parametro que le pasas tambien sera local, sera hecha sobre otra direccion en la pila y no sobre la misma.


Demostracion simple:
Código: C++
  1. #include <stdio.h>
  2.  
  3. typedef struct _tTablero
  4. {
  5.   int x;
  6.   int y;
  7. }tTablero;
  8.  
  9. void IniciarTablero(tTablero *local)
  10. {
  11.   printf("%s %prn", __FUNCTION__, local);
  12.   local = (tTablero*)0xCACACACA;
  13.   printf("%s %prn", __FUNCTION__, local);
  14. }
  15.  
  16. int main(int argc, char **argv)
  17. {
  18.   tTablero *tablero;
  19.   printf("%s %prn", __FUNCTION__, tablero);
  20.   tablero = 0;
  21.   printf("%s %prn", __FUNCTION__, tablero);
  22.   IniciarTablero(tablero);
  23.   printf("%s %prn", __FUNCTION__, tablero);    
  24.   return 0;
  25. }
  26.  


En cuanto a los errores, fijate que te falta un ; al final de ficha.h, y segun lo que te dije antes no corregiste esta funcion ColocarFichasEnTablero ya que el primer parametro no es un puntero. Lo mismo me parece que pasa con IniciarFichas ...

Igual esto me parece contraproducente: typedef tCasilla tTablero[8][8];

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: ¿Problemas con las cabeceras?
« Respuesta #5 en: Jueves 2 de Julio de 2009, 16:08 »
0
Gracias Eternal Idol, creo que lo voy a dejar por hoy porque me parece que no es un buen día para programar  &lt;_&lt;  :bad:

Ya te cuento, ¡gracias de nuevo!

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: ¿Problemas con las cabeceras?
« Respuesta #6 en: Jueves 2 de Julio de 2009, 16:54 »
0
De nada; a veces es bueno despejarse y volver al problema en otro momento  :good:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: ¿Problemas con las cabeceras?
« Respuesta #7 en: Viernes 3 de Julio de 2009, 10:22 »
0
Coincido totalmente.

El problema radicaba, creo yo, en empecé a hacerlo en C++ y luego me pasé a C, pero se me quedó la orientación a objetos en la cabeza, y pensaba en clases y métodos, y programaba en C. Todo culpa del sueño  -_- , claro, no es que yo sea mal programador  :bad:  :lol:

Gracias Eternal Idol, ¡hasta otra!