本文主要是介绍error: aggregate value used where an integer was expected,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述:
把struct结构体类型数据,强制转换成unsigned long
不能进行转换的原因是因为结构类型(包括 union)不是数量类型(Scalar Type);只有在数量类型之间才能进行转换。数量类型包括算术类型和指针类型,算术类型由包括整数类型和浮点类型。
哪怕是
struct
in_addr 类型:
struct in_addr
{in_addr_t s_addr;
};
in_addr_t 一般为 32位的unsigned int,其字节顺序为网络顺序(network byte ordered),即该无符号整数采用大端字节序。
这里即使内存中是unsigned int 类型的,也不能实际使用成unsigned int,因为整体类型不一样,c语言禁止强制转换,强制转换是'低级类型',转'高级类型';
但是可以使用指针强制将这段内存解释成unsigned int类型的数据。
即unsigned int a1 = *(unsigned int *)&(
(struct in_addr) a2);
这篇关于error: aggregate value used where an integer was expected的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!