void foo(size_t limit)
{
char buffer[limit * 14 + 1];
}
但是只有GCC编译器会显示以下信息:
error: ISO C90 forbids variable length array ‘buffer’
在SO上搜索,我找到了这个答案: C99 §6.7.5.2:
因此,我重新声明了大小限制类型变量为:如果大小是不是整数常量表达式的表达式......每次评估它时,它应该有一个大于零的值。
void foo(const size_t limit)
但它仍然给我警告。这是GCC的一个bug吗?
size_t limit
声明为const
不会改变任何东西。因为大小是在运行时确定的,所以它仍然是一个可变长度数组。 - Mysticiallimit
的类型。 - Pascal Cuoqgcc -std=c99 -pedantic ...
调用gcc。 - pmg