error: aggregate value used where an integer was expected

c, format-specifiers, linux, printf, unions

Solution

You are failing to access a field of the indexed union array: `mydata[0]` is a value of type `union data`, and can't be cast to `uint64_t`.

You need to access the proper union member:

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

to select the `uint64_t` value. No need for the cast.

Also: Use `PRIu64` to portably print 64-bit values, you can't assume that `%llu` is the right format specifier.

Problem

I am having following union ``` union data { uint64_t val; struct{ .... } }; ``` and I have a function ``` func(union data mydata[]) { printf("%llu",(uint64_t)mydata[0]); // Here is the error } ``` When i compile this code it is giving following error ``` error: aggregate value used where an integer was expected ```

Original source

Related problems