5

別の構造の配列を含む構造があります。次のようになります。


typedef struct bla Bla;
typedef struct point Point;

struct point
{
    int x, y;
};

struct bla
{
    int another_var;
    Point *foo;
};

グローバルスコープでそれらを初期化したいと思います。これらは、モジュールの説明として意図されています。私は c99 複合リテラルでそれをやろうとしましたが、コンパイラ (gcc) はそれを気に入りませんでした:


Bla test =
{
    0, (Point[]) {(Point){1, 2}, (Point){3, 4}}
};

次のエラーが表示されます。

エラー: 初期化要素が定数ではありません
エラー: ('test' の初期化に近い)

変更する必要がないので、必要な数の「const」を入れることができます。それをコンパイルする方法はありますか?

4

1 に答える 1

5

各要素に複合リテラルは必要ありません。単一の複合リテラル配列を作成するだけです。

Bla test =
{
    0, (Point[]) {{1, 2}, {3, 4}}
};

でコンパイルしてください-std=c99

于 2008-12-12T13:23:45.390 に答える