我有以下联盟
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
最佳答案
您无法访问索引 union 数组的字段:mydata[0]
是 union data
类型的值,无法转换为 uint64_t
。
您需要访问正确的 union 成员:
printf("%" PRIu64, mydata[0].val);
选择 uint64_t
值。不需要类型转换。
此外:使用 PRIu64
可移植地打印 64 位值,您不能假设 %llu
是正确的格式说明符。
关于c - 错误 : aggregate value used where an integer was expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20994959/