請採取以下代碼。MS Visual Studio錯誤:預期的常量表達式
#include "iostream"
using namespace std;
unsigned power(unsigned b, unsigned e){return e?b*power(b, e-1):1;}//Raises base b to a power e
int main(int argc, char* argv[])
{const unsigned lev=5, len=power(2, lev)-1;
int arr[len]; //Error according to Microsoft visual studio
cout<<"The code worked."<<endl;
}
我的Codeblock編譯器與數組分配很好,但Microsoft Visual Studio表示該行需要一個常量表達式。
我明白從堆棧和動態分配的區別。但在這種情況下,參數len
無論如何都是在編譯時靜態確定的。我將該值存儲在一個變量中(而不是直接使用5),這是因爲每次運行程序時我的測試用例都使用不同的len
。
那麼有沒有什麼辦法讓視覺工作室與它一起工作?或者我應該訴諸動態分配,即使CodeBlock接受它?
無法重現(VS2013)。你在使用哪個Visual Studio? –
[無法複製](http://rextester.com/GWXU44735)。請創建一個[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)並向我們展示。 –
我正在使用VS 2010. – Della