作者windincloud (云淡风轻)
看板C_and_CPP
标题[问题] 宣告阵列大小可以用变数?
时间Fri May 8 10:09:41 2009
看到前几篇的内容感到狐疑
记得以前学的都是若你没先#define a 5;
这样就不能这样开阵列 int array[a];
但是今天我使用
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j,a;
scanf("%d",&a);
int b[a][a];
for(i=0;i<a;i++)
for(j=0;j<a;j++)
b[i][j]=i+j;
for(i=0;i<a;i++)
printf("%d\t",b[i][i]);
printf("\n");
return 0;
}
这样却可以ok?
这是那边出问题?还是现在支援了?
----
话说我用gcc 3.4.6测的~
参数有下 -ansi
-std=c99
-std=c89
这样都会过~ 且会执行
执行结果
[~/temp] > ./t
5
0 2 4 6 8
----
请朋友帮忙测
使用visual 2005 却出现
error C2057: 必须是常数运算式
error C2466: 无法配置常数大小为 0 的阵列,常数必须为大於 0 的整数
--
这是gcc bug???
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.188.117
1F:推 Fenikso:try -std=c89 -pedantic 05/08 10:32
2F:→ Fenikso:variable length array在c99是合法的 05/08 10:32
3F:推 Fenikso:VC2005不过的原因大概是他把你的code当c++ compile.. 05/08 10:37
4F:→ windincloud:那再问一下 这样是以後就可以不用动态空间? 只要你能 05/08 10:38
5F:→ windincloud:事先得到你要的空间大小? 05/08 10:38
7F:→ littleshan: VC 会用附档名判断使用 C 或 C++ 编译 05/08 10:48
8F:→ littleshan:过不了是因为 VC 不支援 C99 05/08 10:48
9F:→ littleshan:如无必要还是尽量别用 VLA 05/08 10:50
10F:→ windincloud:感谢 看完那篇就懂了~ 05/08 10:53
11F:推 VictorTom:推:) 05/08 11:59