一个数组定义,该如何处理

一个数组定义
int   main()
{
    int   i=3;
    int   a[i];
    return   0;
}
按说数组的大小不能用非常量变量类定义的,即该代码是错误的,在vc6下运行也是错误的,但为什么在dev-c++下却运行正确呢?

------解决方案--------------------
如果真是这样,可就是因为dev-c++不太厚道。。。
------解决方案--------------------
LZ的那段代码本来就是违法的, 如果编译/运行成功, 也没有什么值得幸庆的. 还是老老实实地定义动态数组吧.

int main()
{
int i=3;
int *a = new int[i];
delete [] a;
return 0;
}

------解决方案--------------------
据说是C99新标准,查了C99有这方面的规定, P35
int i=3;
int a[i];
int b[0];
都是合法的。
目前只有少数编译器支持,以后也许多了。
这里找到一片文章,演示了这种用法,还不错。
http://blog.chinaunix.net/u/4206/showart_273101.html
------解决方案--------------------
gcc自己扩展支持C99的一些特性,没啥好奇怪的。
不要用这个功能就是了。