Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] C++/Allegro

Estas en el tema de C++/Allegro en el foro de C/C++ en Foros del Web. Alguien me podria decir porque me sale el siguiente error estoy creando un pequeno juego en allegro y c++ cuando quiero dividirlo en clases me ...
  #1 (permalink)  
Antiguo 20/09/2014, 22:25
johana_castro95
Invitado
 
Mensajes: n/a
Puntos:
Exclamación C++/Allegro

Alguien me podria decir porque me sale el siguiente error
estoy creando un pequeno juego en allegro y c++ cuando quiero dividirlo en clases me tira los errores y si lo ago en uno solo si funciona(es decir todo en el main) y no quiero que todo quede en el main

file line message

/usr/include/allegro/inline/draw.inl 30 multiple definition 'points'
obj/Debug/bomb.o:/usr/include/allegro/graw.inl 30 first defined here


y de eso me salen como 50 con las funciones que tengo y variables
  #2 (permalink)  
Antiguo 21/09/2014, 07:30
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: C++/Allegro

Posiblemente estes #incluyendo todo (o algo) varias veces.
Usas algun #include en tus programas?
Esos archivos, tienen el truco para no definir todo de nuevo en caso de ser #incluidos de nuevo?

algo asi como:

#ifndef XXX
#define XXX

// definiciones

#endif
__________________
Visita mi perfil en LinkedIn
  #3 (permalink)  
Antiguo 21/09/2014, 14:40
johana_castro95
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: C++/Allegro

Tengo un archivo .h que tiene todas las variables y luego lo mando a llamar en las clases del personaje y enemigos ? es in correcto eso ??

Código:
#ifndef VARIABLES_H
#define VARIABLES_H
#include<allegro.h>
#include "menudatos.h"
#include "datos.h"
#define speed 4
////////////////////////////////////////////////////////
            /*VARIABLES*/
    int points=0;           /*Extra*/
    int delay_man=-1;       /*Extra*/
    clock_t ti1=0,ti2=0;    /*Extra*/
    int num_enemy;          /*Extra*/
    int ene_speed;          /*Extra*/
    BITMAP *bmp;            /*Menu*/
    BITMAP *box;            /*ladrillos*/
    BITMAP *buffer;         /*Juego*/
    BITMAP *backgrnd;       /*fondos*/
    BITMAP *gateclos;       /*PuertaAbierta*/
    BITMAP *gateopen;       /*PuertaCerrada*/
    BITMAP *hiscr;          /*Score*/
    BITMAP *tem_enemy;      /*EnemigosTemp*/
    DATAFILE *data;         /*Archivo.dat*/
    DATAFILE *main_pg;      /*Archivo.dat*/
    int noentry,man,bord,   /*Colores*/
    _box,__enemy,_blast,    /*Colores*/
    _bomb;                  /*Colores*/
    int man_status;         /*Colores*/
    int color_game[6];      /*Colores*/
    enum{NOENTRY,MAN,BORD,  /*Colores*/
    _BOX,DEATH,_BLAST,_BOMB};
    int color_enemy[6];     /*Colores*/
    int initial[15][19]=
                { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
                  -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,
                  -1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1,
                  -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,
                  -1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1,
                  -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,
                  -1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1,
                  -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,
                  -1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1,
                  -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,
                  -1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1,
                  -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,
                  -1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1, 0,-1,
                  -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,
                  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
                };
                int background[15][19];
struct imagen
{
    int x,y,col;
};

#endif // VARIABLES_H
Lo tengo mal asi esntonces ??
  #4 (permalink)  
Antiguo 21/09/2014, 18:32
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: C++/Allegro

Se ve bien por que ya tienes:
#ifndef VARIABLES_H
#define VARIABLES_H
//Eso garantiza que no se repita código.
#endif // VARIABLES_H
¿Te sigue dando problemas así?

De todos los modos te lo esta diciendo donde repite.
se repite en: /usr/include/allegro/inline/draw.inl 30 multiple definition 'points'
y tambien en: obj/Debug/bomb.o:/usr/include/allegro/graw.inl 30 first defined here

o sea mire el archivo llamado bomb.h o bomb lo que sea.
Debes poner el GUARD en todos los .h no solo en ese.
Siempre que un header se repita debes poner el guard, es mas se pone en todos y ya así te quedas tranquilo.

Si estas usando codeblocks con que escribas "guard" y pulses control+j se añade el guard automático pidiéndote solo el nombre.
Una lista de esos comandos los tiene en settings/editor/abbreviations. Solo escribe su nombre y pulsas crtl+j y veras el nombre sustituido por el código. muy útil XDD

Última edición por vangodp; 21/09/2014 a las 18:51

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:02.