关于变长数组 c中为啥不能定义成全局变量

关于变长数组 c中为何不能定义成全局变量?
#include<stdio.h>
const int maxn=10;
int f[maxn];
int main()
{
    return 0;
}

这样在c语言中为何不可以? c99支持变长数组了啊~~

而保存成.cpp 就可以。。为什么。。
------解决方案--------------------
C99定义的这种变长数组的使用是有限制的,不能像在C++等语言中一样*使用
变长数组有以下限制:
1、变长数组必须在程序块的范围内定义,不能在文件范围内定义变长数组;
2、变长数组不能用static或者extern修饰;
3、变长数组不能作为结构体或者联合的成员,只能以独立的数组形式存在;
4、变长数组的作用域为块的范围,对应地,变长数组的生存时间为当函数执行流退出变长数组所在块的时

你是放在文件块范围内定义了,放到函数内部定义就可以了。
------解决方案--------------------
第一个问题:
c/c++中全局变量的存储空间是编译器分配的, 不是在运行期分配的, 大小必须在编译期能确定, 因此变长数组不能是全局变量. 2楼说的几种情况都同理.

第二个问题:
const在c++里是常量, 在c里是只读变量.
因此这个定义在c++里是固定长度的全局数组变量, 是允许的; 在c里是变长数组, 是不允许的.