q*****g 发帖数: 1568 | 1 【 以下文字转载自 Linux 讨论区 】
发信人: qiuxing (球星), 信区: Linux
标 题: GCC 居然允许变量长度的向量
发信站: BBS 未名空间站 (Tue Nov 1 00:47:05 2005), 转信
这个程序本来是一个标准的错误程序,我的gcc居然连个报错都不给,顺利
编译,顺利运行。结果就是拿到Windows上用VC就编译通不过,我于是就被人
嘲笑了一把(^_^):
#include
int main ()
{
int n = 5;
int a[n];
int i;
for (i = 0; i < 5; i++)
{
a[i] = 2 * i;
printf("%d\n", a[i]);
}
return 0;
} |
l********k 发帖数: 17 | 2 this one is ok ba?
【在 q*****g 的大作中提到】 : 【 以下文字转载自 Linux 讨论区 】 : 发信人: qiuxing (球星), 信区: Linux : 标 题: GCC 居然允许变量长度的向量 : 发信站: BBS 未名空间站 (Tue Nov 1 00:47:05 2005), 转信 : 这个程序本来是一个标准的错误程序,我的gcc居然连个报错都不给,顺利 : 编译,顺利运行。结果就是拿到Windows上用VC就编译通不过,我于是就被人 : 嘲笑了一把(^_^): : #include : int main () : {
|
t*q 发帖数: 104 | 3 gcc extension
【在 q*****g 的大作中提到】 : 【 以下文字转载自 Linux 讨论区 】 : 发信人: qiuxing (球星), 信区: Linux : 标 题: GCC 居然允许变量长度的向量 : 发信站: BBS 未名空间站 (Tue Nov 1 00:47:05 2005), 转信 : 这个程序本来是一个标准的错误程序,我的gcc居然连个报错都不给,顺利 : 编译,顺利运行。结果就是拿到Windows上用VC就编译通不过,我于是就被人 : 嘲笑了一把(^_^): : #include : int main () : {
|
q*****g 发帖数: 1568 | 4 其实应该说是C99 extension,呵呵。
【在 t*q 的大作中提到】 : gcc extension
|
q*****g 发帖数: 1568 | 5 不过话说回来,这个extension属于搞计算的人非常非常有用的一个extension啊。
回头有时间再去看看VC是不是有什么option可以接受这样的extension。
【在 q*****g 的大作中提到】 : 其实应该说是C99 extension,呵呵。
|
b**********r 发帖数: 22 | 6 thanks a lot. never knew this :)
【在 q*****g 的大作中提到】 : 不过话说回来,这个extension属于搞计算的人非常非常有用的一个extension啊。 : 回头有时间再去看看VC是不是有什么option可以接受这样的extension。
|
n******t 发帖数: 4406 | 7 这个是C99 ex?????????????
我觉得不太可能啊.
【在 q*****g 的大作中提到】 : 其实应该说是C99 extension,呵呵。
|
n******t 发帖数: 4406 | 8 搞计算要这个extension干什么?
【在 q*****g 的大作中提到】 : 不过话说回来,这个extension属于搞计算的人非常非常有用的一个extension啊。 : 回头有时间再去看看VC是不是有什么option可以接受这样的extension。
|
e******e 发帖数: 86 | 9 好像c++事可以得。
标准得c事不星得。
try to use vector.
in fact I find vector is really good
and the overhead is very very small.
【在 q*****g 的大作中提到】 : 【 以下文字转载自 Linux 讨论区 】 : 发信人: qiuxing (球星), 信区: Linux : 标 题: GCC 居然允许变量长度的向量 : 发信站: BBS 未名空间站 (Tue Nov 1 00:47:05 2005), 转信 : 这个程序本来是一个标准的错误程序,我的gcc居然连个报错都不给,顺利 : 编译,顺利运行。结果就是拿到Windows上用VC就编译通不过,我于是就被人 : 嘲笑了一把(^_^): : #include : int main () : {
|
s*****c 发帖数: 753 | 10 I guess it is either interpreted this way
int a[n]; -> int *a = new int[n];
or const int n=5; int a[n].
I am wondering if you can do sth like this:
int n;
scanf("%d", &n);
int a[n];
【在 q*****g 的大作中提到】 : 不过话说回来,这个extension属于搞计算的人非常非常有用的一个extension啊。 : 回头有时间再去看看VC是不是有什么option可以接受这样的extension。
|
|
|
b**********r 发帖数: 22 | 11 试一下不就知道了。
一点问题都没有。
【在 s*****c 的大作中提到】 : I guess it is either interpreted this way : int a[n]; -> int *a = new int[n]; : or const int n=5; int a[n]. : I am wondering if you can do sth like this: : int n; : scanf("%d", &n); : int a[n];
|
p***o 发帖数: 1252 | 12 no, it's something like _alloca
【在 s*****c 的大作中提到】 : I guess it is either interpreted this way : int a[n]; -> int *a = new int[n]; : or const int n=5; int a[n]. : I am wondering if you can do sth like this: : int n; : scanf("%d", &n); : int a[n];
|
q*****g 发帖数: 1568 | 13 其实主要是方便。比如说我可以写一个函数读进去一个array算一个数,我就
不需要事先知道这个array有多长。
【在 n******t 的大作中提到】 : 搞计算要这个extension干什么?
|
q*****g 发帖数: 1568 | 14
我后来就这么改了。VC才通过编译。
这个我怀疑标准C都不行。
gcc肯定可以。
【在 s*****c 的大作中提到】 : I guess it is either interpreted this way : int a[n]; -> int *a = new int[n]; : or const int n=5; int a[n]. : I am wondering if you can do sth like this: : int n; : scanf("%d", &n); : int a[n];
|
c****e 发帖数: 1453 | 15 还是不要用complier dependent 的代码,呵呵.-Wall也不报告warning吗?
【在 q*****g 的大作中提到】 : 其实主要是方便。比如说我可以写一个函数读进去一个array算一个数,我就 : 不需要事先知道这个array有多长。
|
q***e 发帖数: 90 | 16 That's standard C99 extension, conslt ISO9899:1999. So
you should not worry about it: C 99 aloows things like that:
void func(int n) {
int a[n];
....
}
If you compiler failed to support it, just dump your compiler, hehe
【在 c****e 的大作中提到】 : 还是不要用complier dependent 的代码,呵呵.-Wall也不报告warning吗?
|
d***q 发帖数: 1119 | 17 in c
const int xx
only means this variable is unmutable
but not a constant
【在 q*****g 的大作中提到】 : : 我后来就这么改了。VC才通过编译。 : 这个我怀疑标准C都不行。 : gcc肯定可以。
|
c****e 发帖数: 1453 | 18 thanks for your reminder, but a lot of people can't dump vc.
【在 q***e 的大作中提到】 : That's standard C99 extension, conslt ISO9899:1999. So : you should not worry about it: C 99 aloows things like that: : void func(int n) { : int a[n]; : .... : } : If you compiler failed to support it, just dump your compiler, hehe
|