Problema compilando en C/C++

Agrupa todas las consultas sobre los lenguajes de programacion como C, C++, Python, Java ...

Problema compilando en C/C++

Notapor Garolard » Jue Jul 29, 2010 5:12 pm

Hola chicos, ¿Cómo estais? Vereis, estoy intentando compilar un "minijuego" muy muy sencillo. El escenario es este: tengo un archivo de cabecera (.h) y su implementación (.cpp) en C++. Estos dos archivos los he compilado a parte para conseguir el código objeto (.o). Ahora, he querido hacer el videojuego en un solo archivo en C, queriendo usar algunas funciones y clases que he declarado en los dos primeros archivos. Pero el problema llega a la hora de compilar. Si lo compilo con g++ con el comando:

Código: Seleccionar todo
g++ -o naves naves.c csprite.o


Me suelta por respuesta lo siguiente:

Código: Seleccionar todo
naves.c: In function ‘int init_sprites()’:
naves.c:64: aviso: conversión obsoleta de una constante de cadena a ‘char*’
naves.c:67: aviso: conversión obsoleta de una constante de cadena a ‘char*’
naves.c: In function ‘int main(int, char**)’:
naves.c:108: error: ISO C++ prohíbe la comparación entre puntero y entero


Y si intento compilarlo con gcc con el comando:

Código: Seleccionar todo
gcc -o naves naves.c csprite.o


La respuesta es la siguiente:

Código: Seleccionar todo
In file included from naves.c:4:
csprite.h:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘CFrame’
csprite.h:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘CSprite’
naves.c:11: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘fnave’
naves.c:12: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘fmalo’
naves.c:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘nave’
naves.c:14: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘malo’
naves.c: En la función ‘draw_scene’:
naves.c:28: error: ‘nave’ no se declaró aquí (primer uso en esta función)
naves.c:28: error: (Cada identificador no declarado solamente se reporta una vez
naves.c:28: error: para cada funcion en la que aparece.)
naves.c:40: error: ‘malo’ no se declaró aquí (primer uso en esta función)
naves.c: En la función ‘finalize’:
naves.c:59: error: ‘nave’ no se declaró aquí (primer uso en esta función)
naves.c:60: error: ‘malo’ no se declaró aquí (primer uso en esta función)
naves.c: En la función ‘init_sprites’:
naves.c:64: error: ‘fnave’ no se declaró aquí (primer uso en esta función)
naves.c:65: error: ‘nave’ no se declaró aquí (primer uso en esta función)
naves.c:67: error: ‘fmalo’ no se declaró aquí (primer uso en esta función)
naves.c:68: error: ‘malo’ no se declaró aquí (primer uso en esta función)
naves.c: En la función ‘main’:
naves.c:108: aviso: comparación entre puntero y entero


El archivo de cabecera es como sigue:

Código: Seleccionar todo
#ifndef CSPRITE_H_
#define CSPRITE_H_
#define TRUE 1
#define FALSE 0
// CFrame representa un frame independiente de un sprite.
class CFrame {
public:
   SDL_Surface *img;
   void load(char *path);
   void unload();
};
// La clase CSprite está formada por un array de frames;
class CSprite {
private:
   int posx,posy;
   int state;
   int nframes;
   int cont;
public:
   CFrame *sprite;
   CSprite(int nf);
   CSprite();
   void finalize();
   void addframe(CFrame frame);
   void selframe(int nf);
   int frames() {return cont;}
   void setx(int x) {posx=x;}
   void sety(int y) {posy=y;}
   void addx(int c) {posx+=c;}
   void addy(int c) {posy+=c;}
   int getx() {return posx;}
   int gety() {return posy;}
   int getw() {return sprite[state].img->w;}
   int geth() {return sprite[state].img->h;}
   void draw(SDL_Surface *superficie);
   int colision(CSprite sp);
};
#endif /* CSPRITE_H_ */


Os dejo también en pastebin la implementación:

http://pastebin.org/428195

Y el propio archivo de la aplicación:

http://pastebin.org/428197

(Los pongo en pastebin para que este post no sea inmenso.)

Muchas gracias por anticipado por cualquier pista o ayuda. Saludos!
Garolard
 
Mensajes: 6
Registrado: Jue Oct 15, 2009 7:39 pm

Re: Problema compilando en C/C++

Notapor Garolard » Jue Jul 29, 2010 5:16 pm

Vale, soy subnormal chavales...... en el archivo de la aplicación, en la línea 108, en vez de escribir SDL_QUIT (todo en mayúsculas) he escrito SDL_Quit.... he probado a corregirlo y compilarlo con g++ y ahora va todo como la seda...

soy tonto soy tonto soy tonto soy tonto soy tonto y ultra mega re tonto..................... podeis cerrar el post, perdón por hacer bulto U.U
Garolard
 
Mensajes: 6
Registrado: Jue Oct 15, 2009 7:39 pm

Re: Problema compilando en C/C++

Notapor Juanxo » Jue Jul 29, 2010 7:30 pm

vale, como has comentado es debido a ese error. Quiero pensar que no eres tonto, porque entonces casi todos los que estamos aquí lo somos (muchas veces son cosas tan tontas que es dificil de ver).

Para la proxima, un par de consejos:

en los mensajes de error te aparece: el archivo donde da el error, la linea y el tipo de error. Normalmente el error estará en esa linea o la superior/es

saludos
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Re: Problema compilando en C/C++

Notapor shackra » Mié Ago 04, 2010 4:44 pm

vale, como has comentado es debido a ese error. Quiero pensar que no eres tonto, porque entonces casi todos los que estamos aquí lo somos (muchas veces son cosas tan tontas que es dificil de ver).
secundo la moción! xD.
no hace falta que te trates asi Garolard...
Avatar de Usuario
shackra
 
Mensajes: 308
Registrado: Lun Jun 15, 2009 4:10 pm
Ubicación: Costa Rica


Volver a Sobre lenguajes de programación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron