Vco*_*der 1 c gcc visual-studio-2012
我想知道为什么我可以在linux中执行此代码而不是在visual studio上执行此代码?(文件 - > main.c)
int size;
printf("Size:");
scanf("%d",&size);
int vec[size];
Run Code Online (Sandbox Code Playgroud)
它与c89或c99标准有什么关系吗?因为我试图改变gcc上的标志,但仍然有效.
可变长度数组(VLA)是标准的C99添加,直到最近 Visual Studio不支持C99,据我所知不支持VLA.如果你在C99模式之外的gcc中构建它,让我们说在c90模式中并使用-pedantic标志它将提供一个警告:
警告:ISO C90禁止可变长度数组'vec'[-Wvla]
gcc将支持VLA作为C99模式以外的扩展,甚至是C++.
注意,C11使VLA可选,我们可以从草案C11标准部分看到6.10.8.3 条件特征宏,其中包括以下项目符号:
_ _STDC_NO_VLA_ _整数常量1,用于指示实现不支持可变长度数组或可变修改类型.