在使用gcc编译C90代码时,出现“ISO C90禁止变量大小数组”的警告。

3
我正在使用gcc编译我的C90 c代码。在像这样的声明中,即

int symbols[nc];

其中nc是从输入文件读取的整数值,我收到了警告信息ISO C90 forbids variable-size array。由于输入文件的值不断变化,因此我无法保持一个固定的值。请问如何解决这个问题?是否有必要解决这个警告或者我们可以简单地忽略它呢?

提前感谢。

1个回答

5

你之所以会收到这个警告是因为C90不支持可变长度数组

你要么将gcc切换到C99模式(它支持vla),通过使用-std=c99或std=gnu99命令行标志,要么重新编写你的代码以动态分配内存或使用固定大小的数组。

这个警告只是告诉你在这种情况下你没有遵循C90,但是除此之外是安全的。忽略警告真的不应该是一个选项。


2
如果gcc是唯一会看到这段代码的编译器,那么在调用时添加“-Wno-vla”比养成忽略警告的习惯更安全。 - Christopher Creutzig
谢谢Christopher。在所有关于这个主题的谷歌搜索结果中,你是唯一一个提到这个选项的人。 - shuhalo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接