n是编译期常量吗? 函数中数组大小也一定是编译期常量吗?

函数中数组大小也一定是编译期常量吗?
void A(int n);
int main(void) {
    A(5);
}
void A(int n){
    int a[n];//没报错
}

n是编译期常量吗?

为什么不报错?

可变长数组(variable-length array)是C99引入的新语法。C++标准不支持。不过gcc, clang等编译器支持C99,因此不报错。
详情请参考
https://en.cppreference.com/w/c/language/array#Variable-length_arrays

没报错不很正常吗
c++允许用变量定义数组长度啊
c语言才要求数组长度必须是常量

n不是编译期常量,没报错很奇怪,有可能你这个不是正规的C++编译器,