首页 > 解决方案 > 我们可以将 unsigned char 传递给 inet_ntop()

问题描述

#include <arpa/inet.h>

char buf[INET6_ADDRSTRLEN] = {};
int af = AF_INET;
unsigned char addr[4] = {0x7f, 0x0, 0x0, 0x1};

printf("Address: %s\n", inet_ntop(af, addr, buf, sizeof buf));

传递unsigned char数组inet_ntop()调用是否有效?上面的代码有效,但手册页说 API 在第二个参数中需要网络地址结构。

标签: cnetworkinginet-ntop

解决方案


我看到一种实现 unsigned long 用作struct in_addr addr. 如果您在unsigned long不是 4 个字节的系统上编译 - 我可以预见到麻烦。struct in_addr如果一个系统对than有更严格的对齐要求char [],我可以再次预见到麻烦。

最后,您似乎正在寻找确保这个弱代码在未来可以正常运行的保证。祝你好运。


推荐阅读