¿Cómo arreglo “para la statement inicial del ciclo utilizada fuera del modo C99” Error GCC?

Estoy tratando de resolver el problema 3n + 1 y tengo un ciclo for que se ve así:

 for(int i = low; i  highestres) { highestres = res; } } 

Desafortunadamente recibo este error cuando bash comstackr con GCC:

3np1.c: 15: error: statement inicial de bucle ‘for’ utilizada fuera del modo C99

No sé qué es el modo C99. ¿Algunas ideas?

¡Intentaría declararme fuera del circuito!

Buena suerte para resolver 3n + 1 🙂

Aquí hay un ejemplo:

 #include  int main() { int i; /* for loop execution */ for (i = 10; i < 20; i++) { printf("i: %d\n", i); } return 0; } 

Lea más sobre los bucles en C aquí .

Hay un interruptor de comstackción que habilita el modo C99 , que, entre otras cosas, permite la statement de una variable dentro del ciclo for. Para activarlo usa el comstackdor -std=c99

O como dice @OysterD, declare la variable fuera del ciclo.

Para cambiar al modo C99 en CodeBlocks , siga los siguientes pasos:

Haga clic en Proyecto / Opciones de comstackción , luego, en la pestaña Configuración del comstackdor, seleccione subpestaña Otras opciones y coloque -std=c99 en el área de texto y haga clic en Aceptar .

Esto activará el modo C99 para su comstackdor.

¡Espero que esto ayude a alguien!

He recibido este error también.

 for (int i=0;i<10;i++) { .. 

no es válido en el estándar C89 / C90. Como dice OysterD, debes hacer:

 int i; for (i=0;i<10;i++) { .. 

Su código original está permitido en C99 y versiones posteriores del lenguaje C.

@Blorgbeard :

Nuevas características en C99

  • funciones en línea
  • la statement de variables ya no está restringida al scope del archivo o al comienzo de una statement compuesta
  • varios tipos de datos nuevos, incluidos long long int, tipos de entero extendidos opcionales, un tipo de datos booleano explícito y un tipo complejo para representar números complejos
  • matrices de longitud variable
  • soporte para comentarios de una línea que comienzan con //, como en BCPL o C ++
  • nuevas funciones de la biblioteca, como snprintf
  • nuevos archivos de encabezado, como stdbool.hy inttypes.h
  • funciones matemáticas genéricas tipo (tgmath.h)
  • soporte mejorado para el punto flotante IEEE
  • Inicializadores designados
  • literales compuestos
  • soporte para macros variadas (macros de aridad variable)
  • restringir la calificación para permitir una optimización de código más agresiva

http://en.wikipedia.org/wiki/C99

Un recorrido por C99

si comstack en C cambia

 for (int i=0;i<10;i++) { .. 

a

 int i; for (i=0;i<10;i++) { .. 

También puede comstackr con el conjunto de interruptores C99. Put -std = c99 en la línea de comstackción:

 gcc -std=c99 foo.c -o foo 

REF: http://cplusplus.syntaxerrors.info/index.php?title= 'for'_loop_initial_declaration_used_outside_C99_mode

Para Qt-creator: solo agregue las siguientes líneas al archivo * .pro …

 QMAKE_CFLAGS_DEBUG = \ -std=gnu99 QMAKE_CFLAGS_RELEASE = \ -std=gnu99 

Tuve el mismo problema y funciona, solo tienes que declarar el i fuera del ciclo:

 int i; for(i = low; i <= high; ++i) { res = runalg(i); if (res > highestres) { highestres = res; } } 

Para cualquier persona que intente comstackr código de una fuente externa que utiliza una utilidad de comstackción automatizada como Make , para evitar tener que rastrear las llamadas de comstackción explícitas de gcc, puede establecer una variable de entorno. Ingrese en el símbolo del sistema o ingrese .bashrc (o .bash_profile en Mac):

 export CFLAGS="-std=c99" 

Tenga en cuenta que se aplica una solución similar si se encuentra en un escenario similar con la comstackción C ++ que requiere C ++ 11, puede usar:

 export CXXFLAGS="-std=c++11" 

Simplemente comstack en modo C ++. No NECESITA usar clases para usar C ++. Básicamente utilizo C ++ como una “C más agradable” 🙂

Casi nunca utilizo las clases y nunca utilizo métodos alternativos.