En varios compiladores que he utilizado (todos gcc
pero varias versiones) me sale un error C99 mode
para cosas como declarar int i
dentro de la expresión de bucle en lugar de antes (si no utilizo la opción std=c99
) Después de leer here entiendo que las opciones gcc
-ansi
, -std=c89
y -std=iso9899:1990
toda evalúan con el estándar ANSI C, pero yo no entiendo por qué/si debería seleccionar el estándar de c89
frente a un nuevo estándar como c99
(que es el más nuevo Asumo).ANSI C vs otras normas C
Además, veo múltiples versiones de los estándares de tipo iso
para el lenguaje C, el primero de los cuales (desde mi entender) es un puerto directo del estándar ANSI. que es, es seguro decir que iso
actualizará su nivel de C, pero el estándar ANSI original para C siempre será la misma?
Bono pregunta:
De hecho, me puedo imaginar éste a mí mismo, yo sólo no han tomado el tiempo para hacerlo, sin embargo, así que si alguien sabe de la parte superior de su cabeza y luego lo que es grande , de lo contrario no hay problema, voy a averiguarlo más tarde :)
tengo bastante una nueva impresión del libro The C Programming Language (ANSI)
. Mi libro siempre muestra los bucles de esta manera:
int i;
for(i = 0; i < foo; i++)
pero muchas personas (la mayoría de los que tienen más talento de programación en su dedo meñique) escribir su bucles como este:
(int i = 0; i < foo; i++)
¿Es correcto Digamos que si escribo el ciclo de la primera manera, entonces el i
debería estar accesible para toda la función, pero si lo escribo de la segunda manera, entonces i
solo está accesible para el ciclo for SIN IMPORTAR ¿con qué estándar compilo? Otra forma de hacer esta misma pregunta, si compilo con el estándar c89
, el i
de ambos bucles for será accesible para toda la función y si compilo con el estándar c99
, el i
del primer bucle for será accesible para toda la función mientras que el i
del segundo bucle for será accesible sólo por el bucle?
¿Qué te hace decir que la mayoría de las personas escriben loops así? Ciertamente no es válido C por el estándar c89. –
@Carl Norum Sé que no es válido en 'c89' (suponiendo que con" eso "te refieres a' int i' dentro de la declaración for loop). Casi todos los que he visto escriben sus loops así. ¿Tu observación ha sido diferente? – ubiquibacon
esto tiene que ser duplicado de algo, http://stackoverflow.com/questions/288441/variable-declaration-placement-in-c – Anycorn