在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表明,它实际上并没有加入到规范。按照下面的答案做了。

+1

***发现C++ 14支持这个***我很确定这是错误的。 https://www.reddit.com/r/cpp_questions/comments/3clm34/why_was_n3639_runtimesized_arrays_with_automatic/ – drescherjm

不,C++ 14不支持它。

尝试使用动态容器而不是:

std::vector<char> infoLog(length); 

如果您不希望允许创建后调整(因为VLA没有),那么

auto infoLog = std::make_unique<char[]>(length); 

都将使用堆存储内容的空间,并在变量infoLog离开作用域时自动释放它。