1. ホーム
  2. c

[解決済み] エラー:整数が期待されるところで集約値が使用された

2022-02-09 22:21:39

質問

次のような組合があります。

union data {
     uint64_t val;
     struct{
     ....
     }
};

という関数があります。

func(union data mydata[])
{
    printf("%llu",(uint64_t)mydata[0]); // Here is the error
}

このコードをコンパイルすると、以下のエラーが発生します。

error: aggregate value used where an integer was expected

解決方法は?

インデックス付きユニオン配列のフィールドへのアクセスに失敗しています。 mydata[0] は型の値です。 union data にキャストすることはできません。 uint64_t .

適切な組合員にアクセスする必要があります。

printf("%" PRIu64, mydata[0].val);

を選択してください。 uint64_t の値を指定します。キャストは不要です。

また を使用します。 PRIu64 が64ビット値をポータブルに表示することを想定していない。 %llu は正しい書式指定子です。