我有一个简单的函数,其中声明一个数组的大小为 ,具体取决于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