Inicio > Programación, Resolución problemas > Gcc 4.4.X #elif with no expression

Gcc 4.4.X #elif with no expression

Jueves, 10 de septiembre de 2009 Dejar un comentario Ir a comentarios

gcc_sm

Ya me extrañaba a mi que la migración de Gcc 4.3.2 a 4.4.X estuviera marchando sin absolutamente ningún problema. Bueno en realidad lo que os comento a continuación no se debe en si a un error del compilador, sino más bien a una mala costumbre que algunos desarrolladores de software han empleado a la hora de escribir código debido a que el compilador anteriormente no se quejaba de ello.

Antes de la versión 4.4.x de gcc estaba permitido hacer declaraciones de preprocesador similares a estas:

#ifdef __GNUC__
#undef alloca
#define alloca __builtin_alloca
#elif defined WIN32 || defined WIN64
#if defined _MSC_VER || defined __BORLANDC__
#include <malloc.h>
#endif
#elif defined HAVE_ALLOCA_H
#include <alloca.h>
#elif defined HAVE_ALLOCA
#include <stdlib.h>
#elif
#error
#endif

Como podéis apreciar casi al final del todo hay un #elif al que no le acompaña ninguna expresión. Anteriormente esto se tomaba como un #else, pero ahora no. Para que nuestro código compile bien tenemos que reemplazar ese solitario #elif por un #else como siempre tendría que haber sido ;) .

GD Star Rating
loading...
Share