jas*_*ogd 9 c arrays gcc c99 c89
我已经读过C89不支持可变长度数组,但是下面的实验似乎反驳了:
#include <stdio.h>
int main()
{
int x;
printf("Enter a number: ");
scanf("%d", &x);
int a[x];
a[0] = 1;
// ...
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我这样编译时(假设文件名是va_test.c):
gcc va_test.c -std=c89 -o va_test
Run Code Online (Sandbox Code Playgroud)
有用...
我错过了什么?:-)
Goz*_*Goz 10
GCC始终支持可变长度阵列AFAIK.将-std设置为C89不会关闭GCC扩展...
编辑:事实上,如果你在这里检查:
http://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#C-Dialect-Options
在-std =下你会发现以下内容:
ISO C90程序(禁用与ISO C90冲突的某些 GNU扩展).与C代码的-ansi相同.
密切注意"确定"一词.
C89无法识别//评论.
C89不允许与代码混合的定义.
你需要fflush(stdout)在printf确定之前看到提示scanf.
main "看起来更好" int main(void)
尝试gcc -std=c89 -pedantic ...代替