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