为什么在C99中不能在带有变量的函数外部声明数组作为大小参数?
例如,考虑以下代码片段。
这将导致error: variably modified ‘matrix’ at file scope
编译错误。
static int const height = 5;
static int const width = 5;
static int const matrix[height][width] = { ... };
int main(void){ ... }
我知道c中的const并不意味着常数。它的意思是“只读”,但是我不正确理解它的含义。 那么为什么数组不能从只读存储器中获取大小呢?
答案 0 :(得分:1)
C99 6.7.5.2/2数组声明符:
只有具有块作用域或函数原型作用域且没有链接的普通标识符(如6.2.3所定义)不得具有可变修改的类型。如果标识符被声明为具有静态存储持续时间的对象,则该标识符不得具有可变长度的数组类型。