2012-11-05 38 views

回答

3

这不是有效的C89代码。即使变量恰好为const,也不能声明具有可变大小的数组。

如果你将它作为#define而不是const int,它会起作用。不过,它在C99中有效。 GCC和其他编译器也提供它作为C89模式的扩展。

+0

@Kos谢谢,纠正。 –

+0

GCC允许在C++中使用'-std = gnu ++ 98'(缺省为或仍然是?)或者使用-std = gnu ++ 11'作为语言扩展。 – Kos

+0

注意:它只是在块范围内有效的C99,在文件范围内,您仍然需要一个_constant表达式_作为大小。 –

1

因为const不会创建常量。它创建一个只读对象。

对象和常量的区别在于对象有一个特定的内存位置,常量只能在源代码中生存。

1

在C89中,数组大小应该是一个常量表达式。 A const变量不是一个常量表达式。要做到这一点,你必须使用C99中的VLA。