1. ホーム
  2. c

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

2022-03-03 23:44:58

質問

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

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 であり、有効な宣言となる。