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 ...
代替
归档时间: |
|
查看次数: |
2310 次 |
最近记录: |