1. ホーム
  2. c

[解決済み] 配列の定義 - 式は定数値を持つ必要があります。

2022-02-17 03:10:08

質問

スタック上に以下のような配列を作成しています。

static const int size = 10;

void foo() {
..
int array[size];
..
}

しかし、size が定数であるにもかかわらず、コンパイルエラー: "expression must have a constant value"が発生します。マクロは使えるのですが

#define SIZE (10)

しかし、私はなぜ size マーク const はコンパイルエラーになります。

解決方法は?

C言語キーワード const とは何の関係もありません。 定数 . C言語では、定義上、quot;constant"という用語は、リテラル値やenum定数を指します。これは、もし本当に 定数 : リテラル値を使うか(定数に名前を付けるマクロを定義する)、列挙定数を使うか。

(詳しくはこちらをご覧ください。 定義より定数の方が良いですか? )

また、C99以降のバージョンでは、ローカル配列のサイズとして定数でない値を使用することが可能です。つまり、このコードでは size は定数ではありません。しかし、あなたはどうやら古いコンパイラを使っているようなので、あなたの場合

#define SIZE 10

が正しい方法です。