2016-12-01 347 views
0

我想在棧上有一個動態大小的數組。 我有以下代碼在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

回答

3

不,C++ 14不支持它。

嘗試使用動態容器而不是:

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

如果您不希望允許創建後調整(因爲VLA沒有),那麼

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

都將使用堆存儲內容的空間,並在變量infoLog離開作用域時自動釋放它。