【发布时间】:2011-04-10 17:36:17
【问题描述】:
您能否向我解释一下为什么 MingW GCC 不在此代码中产生警告:
int main()
{
int num;
int people[ num ];
cout << people[ 0 ];
cin >> num;
}
但在这里,我只用num = 1替换了最后一条语句,现在出现了警告......
int main()
{
int num;
int people[ num ]; //warning: 'num is used uninitialized..'
cout << people[ 0 ];
num = 1;
}
【问题讨论】:
-
等等,警告是否存在?我编辑了但不得不回滚你的问题,因为它自相矛盾。
-
@BoltClock:编辑:哦等等,没关系,这个问题自相矛盾......我编辑了这个问题,应该是这样。
-
令我惊讶的是,考虑到数组大小应该是一个常数,它们中的 either 都能编译...
-
@Mehrdad:这是一个 GCC 扩展,可能你必须使用
-ansi或-std=c++98。 -
在严格模式之外的 gcc 中完全允许使用非常量长度的数组,这是一个 GNU 扩展。尽管这种特殊情况确实很有趣,因为由于
num没有初始化,因此您是否会引发堆栈溢出或多或少是随机的。