在Visual Studio 2015中启用C++ 14 cmake
问题描述:
我想在栈上有一个动态大小的数组。 我有以下代码在Visual Studio 2015中启用C++ 14 cmake
int length = 0;
getLength(&someVar, &length);
char infoLog[length];
但我不能这样做。 我最初在macOS上开发了代码,并没有编译它的问题。 我做了一些研究,发现C++ 14支持这个,但我不确定如何在CMake(或VS2015社区版)中打开它。
感谢
编辑:由于drescherjm表明,它实际上并没有加入到规范。按照下面的答案做了。
答
不,C++ 14不支持它。
尝试使用动态容器而不是:
std::vector<char> infoLog(length);
如果您不希望允许创建后调整(因为VLA没有),那么
auto infoLog = std::make_unique<char[]>(length);
都将使用堆存储内容的空间,并在变量infoLog
离开作用域时自动释放它。
***发现C++ 14支持这个***我很确定这是错误的。 https://www.reddit.com/r/cpp_questions/comments/3clm34/why_was_n3639_runtimesized_arrays_with_automatic/ – drescherjm