在编写一些代码时,我意识到我的一个代码工作,根据我的理解不应该工作.代码是
int main() { int val; cin>>val; int array[val]; }
不仅如此,即使是下面的代码也能正常工作
int main() { int valone = rand(); int valtwo = rand(); int array[valone][valtwo]; }
我总是理解静态数组需要常量值,或编译器在编译期间可以推导出的值.
最近的C++ 11/14规范是否有任何变化,或者从一开始就适用于C++.
注:Visual Studio的编译器提供了这种情况的一个错误,但
g++
并clang
成功编译上面的代码
Cody Gray.. 7
它是一个可变长度的数组.
它们由C99支持,GCC和Clang都支持它们作为非标准扩展在C++中使用.(它们不是 C++语言的一部分.)MSVC不支持C99,因此根本不支持它们.
在标准C++中,您可以使用std::vector
.
它是一个可变长度的数组.
它们由C99支持,GCC和Clang都支持它们作为非标准扩展在C++中使用.(它们不是 C++语言的一部分.)MSVC不支持C99,因此根本不支持它们.
在标准C++中,您可以使用std::vector
.