我希望printf
类型为struct in6_addr
的ipv6地址的值和控制台类型为u_int32_t
的ipv4地址。
我尝试过类型转换,但会产生错误
error: aggregate value used where an integer was expected
printf("---------------- ipv4= %zu ipv6 = %zu ",(size_t)ipv4, (size_t)ipv6);
在堆栈溢出和其他地方经历旧问题之后,我还尝试了%s ,%lu
以及许多其他方法。
如果有人有解决方案,我将非常感激。
答案 0 :(得分:5)
in6_addr
是一个包含联合的结构,你不能将它强制转换为size_t并希望它能够工作。您应该使用inet_ntop
将其转换为人类可读的形式。有关详细信息,请参阅http://www.beej.us/guide/bgnet/output/html/multipage/inet_ntopman.html。