1. ホーム
  2. c

[解決済み】C言語におけるファイルスコープでの可変長配列の変更

2022-01-23 19:13:19

質問

次のようなコードがあります。

static int a = 6;
static int b = 3;

static int Hello[a][b] =
{
    { 1,2,3},
    { 1,2,3},
    { 1,2,3},
    { 1,2,3},
    { 1,2,3},
    { 1,2,3}
};

が、コンパイルするとエラーになります。

ファイルスコープで 'Hello' が可変に変更されました。

どうしてこんなことになったのか、どうすれば直るのか。

解決方法は?

サイズを変数で指定する静的配列は作成できません。

そのため、定数は #define d:

#define a 6

このようにすると、プリプロセッサーは a6 であり、有効な宣言となる。