modo c gcc for-loop

¿Cómo arreglo "para la declaración inicial del ciclo utilizada fuera del modo C99" Error GCC?



c99 mode in c (9)

¡Intentaría declararme fuera del circuito!

Buena suerte para resolver 3n + 1 :-)

Aquí hay un ejemplo:

#include <stdio.h> 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 here .

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

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

Desafortunadamente recibo este error cuando intento compilar con GCC:

3np1.c: 15: error: declaración inicial de bucle ''for'' utilizada fuera del modo C99

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


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

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


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.


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

QMAKE_CFLAGS_DEBUG = / -std=gnu99 QMAKE_CFLAGS_RELEASE = / -std=gnu99


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

Haga clic en Proyecto / Opciones de compilación , luego, en la pestaña Configuración del compilador, 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 compilador.

¡Espero que esto ayude a alguien!


Simplemente compila 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.


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; } }


si compila en C cambia

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

a

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

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

gcc -std=c99 foo.c -o foo

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


@Blorgbeard :

Nuevas características en C99

  • funciones en línea
  • la declaración de variables ya no está restringida al alcance del archivo o al comienzo de una declaración 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