Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





warning extraño en C++

Iniciado por bnl, 14 de Agosto de 2008, 06:06:20 PM

« anterior - próximo »

bnl

Estoy haciendo un pequeño juego para la Nintendo DS en C++.
Al compilar me da un warning muy extraño, lo he buscado en google pero no aparece nada que me de una pista por donde van los tiros.
El warning es

juego.cpp:47: warning: inlining failed in call to 'void Juego::Ejecutar()': --param max-inline-insns-single limit reached

Mi funcion main es muy sencilla. El metodo ejecutar contiene el blucle principal del juego.
Antes no tenia la clase juego y tenia su contenido dentro de la main y me compilaba correctamente.



int main(int argc, char ** argv)
{
    Juego *juego = new Juego();

juego->Ejecutar();

delete juego;

return 0;
}






void Ejecutar()
{
  /// Codigo de la funcion.
}




¿Alguien sabe como solucionarlo?

Gracias
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

ethernet

Tienes el código de la función en el .h?

bnl

No estoy utilizando fichero de cabecera
Tengo un cpp por cada clase y ningun hpp
El main lo tengo en otro cpp a parte
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

Pogacha

¿Como sabe cada modulo como son las clases de otros modulos entonces?

davur

#4
¿No estás utilizando cabeceras? Es práctica extremadamente habitual, si no obligada, separar físicamente la interfaz de una clase de su implementación (salvo en el caso de templates y funciones inline).

El aviso es debido, posiblemente, al hecho de que estás definiendo tus funciones miembro dentro de las definiciones de sus respectivas clases, es decir, estás solicitando al compilador (implícitamente) que las susodichas funciones (¡todas ellas!) sean inline. Lo cual no es una buena idea, porque no todas las funciones son buenas candidatas a ser inline. En particular, es posible que el aviso específico que mencionas se deba a que la función Juego::Ejecutar() supere el límite de instrucciones definido por el compilador para las funciones candidatas a inline.

Buffon

Aunque tampoco hay que asustarle.

Ese warning te informa que esa función deja de ser inline, como debería ser. En este caso, el compilador ha sido igual de listo que debería de ser un programador de C++, y como ha descubierto que tu no lo eres te lo indica.

CUIDADO: esta función no debería ser nunca inline tio y tu la estás intentando definir como tal, pero no te preocupes que ya lo arreglo yo por ti.

es como los warnings.

int i = 0;
unsigned int j = 0;
i == j

warning, estás comparando tipos distintos tio, no me seas cateto del C++ y pon un static_cast<> delante por dios !!!


---

No molaría tener esos mensajes de warning en los compiladores ? xD

16BITBoy

xD como el segundo no, que estresante seria programar ^^

Worvast

Cita de: Buffon en 14 de Agosto de 2008, 11:03:43 PM
No molaría tener esos mensajes de warning en los compiladores ? xD


Vamos, te pone verde el compilador cuando hagas alguna tontería por que te equivoques xD, así todo el mundo le tendrá miedo a compilar xD


Bye-nee

Vicente

Y ya imagínate cuando el servidor de integración continua mande un mail a los demás compañeros de proyecto y a tu jefe con tus errores de compilación :p

Fichero.cpp, Line 123: "El cateto este no sabe comparar tipos"
Fichero2.cpp, Line 28 "El junior además ha intentado hacer inline de una función de 23405 líneas"

Vamos, sería la risa :p Un saludo!

Vicente

tamat

Cita de: Vicente en 18 de Agosto de 2008, 10:46:03 AM
Y ya imagínate cuando el servidor de integración continua mande un mail a los demás compañeros de proyecto y a tu jefe con tus errores de compilación :p

Fichero.cpp, Line 123: "El cateto este no sabe comparar tipos"
Fichero2.cpp, Line 28 "El junior además ha intentado hacer inline de una función de 23405 líneas"

D: eso se hace?
Por un stratos menos tenso

Vicente

En mi proyecto si recibimos un mail cada vez que se genera una build en el server :) Supongo que si la build compila bien no es tan útil, pero si se rompe si que es útil que avise de alguna manera para que alguien lo arregle :D

Un saludo!

Vicente

Fanakito

Cita de: tamat en 18 de Agosto de 2008, 12:16:38 PM
Cita de: Vicente en 18 de Agosto de 2008, 10:46:03 AM
Y ya imagínate cuando el servidor de integración continua mande un mail a los demás compañeros de proyecto y a tu jefe con tus errores de compilación :p

Fichero.cpp, Line 123: "El cateto este no sabe comparar tipos"
Fichero2.cpp, Line 28 "El junior además ha intentado hacer inline de una función de 23405 líneas"

D: eso se hace?

Eso ya se hizo: C Compiler Errors (For Real).

bnl

No tenia ni idea de que si no incluias cabeceras se declaraban como inline. Pensaba que eso ocurria solo si metias la implementacion dentro de la cabecera, pero no si no ponias cabecera.

Ya se soluciono el problema, aunque no se muy bien como. Creo que fue por alguna funcion que recibia un objeto y ahora recibe un puntero al objeto.

De todas formas separare la implentacion de las cabeceras.

Con la de errores que tengo al estar aprendiendo c++ mejor que el compilador no me meta mucha caña no sea que me desmoralice y me vuelva a .NET
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.