1. ホーム
  2. c

[解決済み】エラー:イニシャライザー要素がロード時に計算可能でない

2022-01-28 18:37:36

質問

構造体を受け取る関数があり、その変数を配列に格納しようとしています。

int detect_prm(Param prm) {
  int prm_arr[] = {prm.field1, prm.field2, prm.field3};

  return 0;
}

しかし gcc -Wall -ansi -pedantic-errors -Werror 以下のようなエラーが発生します。

initializer 要素がロード時に計算可能でない。

私には問題ないように見えますが、何が問題なのでしょうか?

解決方法は?

初期化リストはコンパイル時の定数式でなければなりません。代わりに以下のようにしてください。

int prm_arr[3];

prm_arr[0] = prm.field1;
prm_arr[1] = prm.field2;
prm_arr[2] = prm.field3;