我们都知道静态数组的基本规则:
int size = 20;
char myArray[size];
是不合法的。和。
const int size = 20;
char myArray[size];
没关系。
但是,这又如何。
int f(const int size)
{
char myArr[size];
}
void main()
{
f(2);
f(1024);
}
MSVC 说这是一个错误,gcc 似乎可以编译并执行它。
显然,它不可移植,但它应该被接受吗?
哪个编译器在这种情况下做正确的事情?
此外,如果编译器允许,那么良好的编程标准/实践是否应该允许?
编辑:这个想法是我想要堆栈分配速度,但我在编译时不知道数组的大小。我知道还有其他一些解决方案,堆栈分配可能不会是一个有意义的优化,但我认为这是一个有趣的用法。