Arrays C++;具有用户输入大小的数组(也称为为什么编译?)

Arrays C++;具有用户输入大小的数组(也称为为什么编译?),arrays,memory-leaks,clang,dynamic-memory-allocation,Arrays,Memory Leaks,Clang,Dynamic Memory Allocation,我在win 10上试用了clang(10.0),代码片段如下: #包括 使用名称空间std; int main() { 常数int N=10; int ii; cout>ii; INTA[N+ii]; 对于(int i=0;i

我在win 10上试用了clang(10.0),代码片段如下:

#包括
使用名称空间std;
int main()
{
常数int N=10;
int ii;
cout>ii;
INTA[N+ii];
对于(int i=0;i

C++中的格式不正确。数组变量的大小必须是编译时常数。

我不确定为什么没有编译错误(数组a的大小在编译时是未知的)

C++标准中的<强> > <强>要求编译不正确的程序。当编译器有意编译一个不合格的程序时,使用的是语言扩展。

该标准确实要求语言实现发出诊断消息,通知用户其格式错误的程序。除非您在编译时提供
-pedantic
选项,否则Clang不符合该标准。如果您确实使用它,Clang会这样说:

这就是clang文档对该选项的描述:

关于语言扩展的警告


因为有些编译器支持与
c
相关的VLA:
warning: variable length arrays are a C99 feature [-Wvla-extension]
-pedantic, --pedantic, -no-pedantic, --no-pedantic