我正在尝试将a强制转换struct
为另一个。但是我在编译时总是收到此错误:
要求转换为非标量类型
我收到此行的错误:
p是一个结构前缀,我需要将其强制转换为struct prefix_ipv4
get_info (type, (struct prefix_ipv4) p);
代码:
ospf_external_info_delete (u_char type, struct prefix_ipv4 p)
{
///////////////
}
struct prefix_ipv4
{
u_char family;
u_char prefixlen;
struct in_addr prefix __attribute__ ((aligned (8)));
}
struct prefix
{
u_char family;
u_char prefixlen;
union
{
u_char prefix;
struct in_addr prefix4;
struct in6_addr prefix6;
struct
{
struct in_addr id;
struct in_addr adv_router;
} lp;
u_char val[8];
} u __attribute__ ((aligned (8)));
};
谁能说为什么?
您不能转换为其他结构类型。但是,您可以将指针强制转换为不同的结构类型,这是通过具有共同起始字段的结构(您的方式)来广泛完成的。您可以更改函数以使用指针:
void get_info(..., struct prefix_ipv4 *prefix)
...
然后调用它:
get_info(type, (struct prefix_ipv4 *)&p);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句