Czytałem o VLA w C Primer Plus, a ta książka ściśle mówi, że wprowadzenie VLA do C zaczęło się od standardu C99. Ilekroć próbuję zadeklarować zmienną sterującą w pętli w nagłówku pętli for, gcc informuje mnie, że akcja ta jest dozwolona tylko w trybie C99. Jednak następujący kod testowy kompiluje się i działa (mimo że wypisuje on zmienne śmieci, czego należy się spodziewać, ponieważ żaden z elementów tablicy nie został zainicjowany).Czy tablice o zmiennej długości naprawdę nie są dozwolone w C90?
#include <stdio.h>
int main(){
int x;
int i = 9;
int array[i];
for(x = 0; x < i; x++)
printf("%d\n", array[x]);
return 0;
}
Jeśli nie jestem w trybie C99, w jaki sposób może to być zgodne z prawem?
Z jakiego kompilatora korzystasz? Jakie argumenty przekazujesz podczas kompilacji? –
Musisz otrzymywać 'warning: ISO C90 zabrania tablic o zmiennej długości '' –
[To pytanie] (http://stackoverflow.com/questions/5060799/c99-not-default-c-version-for-gcc) , choć nie jest to dokładnie duplikat, wydaje się mieć znaczenie tutaj. –