Programación General > C/C++
¿Problemas con las cabeceras?
m0skit0:
¡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 ---#include "global.h"#include "tablero.h" int main(int argc, char *argv[]){ tTablero *tablero; tFicha fichas[32]; IniciarTablero(tablero); IniciarFichas(fichas); ColocarFichasEnTablero(tablero, fichas); system("PAUSE"); return 0;} Me marca error en la línea 2 :mellow: , función ColocarFicha():
--- Código: C ---#ifndef YACHESS_TABLERO#define YACHESS_TABLERO #include "global.h"#include "ficha.h" tBool IniciarTablero(tTablero* tablero);tBool ColocarFichasEnTablero(tTablero tablero, tFichas fichas[]); #endif
--- Código: Text ---8 tablero.h syntax error before "tFichas"
:brickwall: :hitcomp: :no: :alien:
Eternal Idol:
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.
m0skit0:
--- Cita de: "Eternal Idol" ---tBool ColocarFichasEnTablero(tTablero *tablero, tFichas fichas[]);
--- Fin de la cita ---
Pfff, ya me vale... -_- -_- :brickwall: :lol:
--- Cita de: "Eternal Idol" ---si dejas una minima expresion compilable del problema es mas facil de analizar
--- Fin de la cita ---
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.
--- Fin de la cita ---
IniciarTablero(tablero) la inicializa :)
En fin, vaya despistes llevo hoy :lol: ¡Muchas gracias!
m0skit0:
Me sigue dando errores :P
--- Código: Text ---main.c In function `ColocarFicha': 5 main.c syntax error before '{' token 9 main.c syntax error before "IniciarTablero" :mellow:
[attachment=0:30unxhd6]yachess.zip[/attachment:30unxhd6]
Eternal Idol:
--- Cita de: "m0skit0" ---IniciarTablero(tablero) la inicializa :)
--- Fin de la cita ---
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++ ---#include <stdio.h> typedef struct _tTablero{ int x; int y;}tTablero; void IniciarTablero(tTablero *local){ printf("%s %prn", __FUNCTION__, local); local = (tTablero*)0xCACACACA; printf("%s %prn", __FUNCTION__, local);} int main(int argc, char **argv){ tTablero *tablero; printf("%s %prn", __FUNCTION__, tablero); tablero = 0; printf("%s %prn", __FUNCTION__, tablero); IniciarTablero(tablero); printf("%s %prn", __FUNCTION__, tablero); return 0;}
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];
Navegación
[#] Página Siguiente
Ir a la versión completa