Matrices de longitud variable en C89?

He leído que C89 no admite matrices de longitud variable, pero el siguiente experimento parece refutar eso:

#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 (suponiendo que el nombre de archivo esva_test.c):

gcc va_test.c -std=c89 -o va_test

Funciona...

¿Qué me estoy perdiendo? :-)

Respuestas a la pregunta(3)

Su respuesta a la pregunta