1. ホーム
  2. gcc

[解決済み】警告:イニシャライザーの周りに中括弧がないことを修復する方法?

2022-01-25 17:39:32

質問

valaで生成されたcコードで警告が出る。

警告: 初期化子の周りに中括弧がありません

コードは動くのですが、警告がうっとうしいです。警告が参照するvalaのコードは以下の通りです。

struct Position {uint x; uint y;}
private static Position positions[8];

生成されたC言語のコードは

static Position det_positions[8] = {0};

ポジションの初期化を半ダースほど試してみましたが、警告を満足させる構文にすることができないようです。これは GCCバグ53119 または、修正する方法はありますか?

解決方法は?

はい、これは関連するようです GCCバグ53119 . Cの宣言を次のように変更すると治ります。 {{0}}. あなたの選択肢は

    {を使用します。 警告を無視する。
  1. 生成後のCコードを操作して {{0}} の代わりに {コード {コード を使用して、その行に {コード などがあります。
  2. 配列を宣言する {0} をValaで、Cの定義は別の場所で書く。(2.の永久保存版)
  3. 次のようなことをします。 sedextern は初期化されます。 struct foo { int bar; Position positions[8]; } static foo position_holder という警告が出ますが、これは問題なく、警告は消えます。