He leído que el C89 no es compatible con arreglos de longitud variable, pero el siguiente experimento parece desmentir que:Arrays de longitud variable en C89?
#include <stdio.h>
int main()
{
int x;
printf("Enter a number: ");
scanf("%d", &x);
int a[x];
a[0] = 1;
// ...
return 0;
}
Cuando compilo como tal (nombre de fichero asumiendo es va_test.c
):
gcc va_test.c -std=c89 -o va_test
Funciona ...
¿Qué me falta? :-)
yo no le creo. '-std = c89' también desautoriza las declaraciones antes de las declaraciones de variables, que tiene su código, por lo que habría generado un error de compilación si realmente se compiló con' -std = c89'. El valor predeterminado es '-std = gnu90' que admite vlas y muchas otras extensiones para el lenguaje C89/C90. –
@R. GCC 4.3.4 (que es lo que tengo) está contento con las variables, pero no le gustan los comentarios '//'. No está del todo claro para mí si el '// ...' es literal del código real del que pregunta, o si está pensado como una elisión. Yo hubiera pensado lo último. –
Impar Supongo que varía entre versiones de gcc y no lo he probado por un tiempo. –