Gcc 4.4.X #elif with no expression
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
.
loading...


Últimos comentarios