我有一個簡單的函數,其中聲明一個數組的大小爲 ,具體取決於int參數。依賴於函數參數的C++數組大小導致編譯錯誤
void f(int n){
char a[n];
};
int main() {
return 0;
}
這段代碼編譯罰款GNU C++,但不是MSVC 2005
我得到以下編譯錯誤:
.\main.cpp(4) : error C2057: expected constant expression
.\main.cpp(4) : error C2466: cannot allocate an array of constant size 0
.\main.cpp(4) : error C2133: 'a' : unknown size
有什麼事糾正呢?
(我感興趣的是與MSVC這項工作,而無需使用新/刪除)
哦,所以它分配在堆棧上!這真是奇妙:)謝謝! – xxxxxxx 2008-11-23 05:06:40
請注意來自alloca手冊頁的這條評論: BUGS alloca函數依賴於機器和編譯器。在很多系統上,它的實現是很麻煩的。它的使用是不鼓勵的。 – 2008-11-23 06:30:56
是的,但它確實在MSVC下工作,這是OP試圖讓他的代碼工作。多年來我一直在使用它。 – 2008-11-23 18:48:55