¿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
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