相关疑难解决方法(0)

ISO C90禁止可变长度阵列

我正在动态计算数组的大小.就像是:

void foo(size_t limit)
{
  char buffer[limit * 14 + 1];
}
Run Code Online (Sandbox Code Playgroud)

但只是GCC编译器说:

error: ISO C90 forbids variable length array ‘buffer’
Run Code Online (Sandbox Code Playgroud)

搜索SO我发现这个答案:

C99§6.7.5.2:

如果size是一个不是整数常量表达式的表达式......每次计算它时,它的值应大于零.

所以,我做了大小限制类型变量的重新声明:

void foo(const size_t limit)
Run Code Online (Sandbox Code Playgroud)

但它继续给我警告.这是GCC的错误吗?

c variable-length-array

3
推荐指数
2
解决办法
2万
查看次数

标签 统计

c ×1

variable-length-array ×1