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
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.