Han*_*Sun 3 c++ arrays dimension c++11
我只是想知道为什么这在Clang 4.0中有效:
unsigned cnt = 42;
int k[cnt];
Run Code Online (Sandbox Code Playgroud)
但这不会:
unsigned cnt = 42;
string bad[cnt];
Run Code Online (Sandbox Code Playgroud)
我刚刚查看了C++入门第5版.它说:
必须在编译时知道维度,这意味着维度必须是常量表达式
如果这是真的,为什么要int k[cnt];工作?
Cub*_*bbi 14
这两段代码都不适用于C++.
但是,在C中,可以使用非常量表达式作为数组大小.一些编译器(例如,没有-pedantic选项的GCC )支持C++代码中的C特性.
至于元素类型之间的区别,它是特定于编译器的.海湾合作委员会汇编两者.clang ++ std::string在这种情况下禁止非POD类型(例如).