2012-11-05 35 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。