実際に C99 と C11 で const キーワードを使用して、このような定数式を作成できますか? それについてどのような基準が述べていますか?
const int n = 5;
int main()
{
int arr[n];
}
C89 / C90 ではできません。
実際に C99 と C11 で const キーワードを使用して、このような定数式を作成できますか? それについてどのような基準が述べていますか?
const int n = 5;
int main()
{
int arr[n];
}
C89 / C90 ではできません。
const
C のNo.は定数を意味することはありませんが、ready-only を意味します。
C90/C99/C11も同様です。
この例では、可変長配列を使用していることに注意してください。VLA は C99 で導入され、VLA のサイズは定数式である必要はありませんが、それでも定数式でn
はありません。
いいえ、const
C++ のように定数を作成しません。
一方、C99 では可変長配列 (VLA) が追加されたため、auto
ストレージ クラスのサイズは定数である必要はありません。これにより、次のようなことができます。
int f(int n) {
int array[n];
// ...
}
したがって、求めていることを正確に実行することはできませんが、多くの(おそらくほとんどの) 状況で同等に近いことを行うことはできます。