微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mac / Windows不同格式的in_addr结构IPv4地址

我将一些Windows代码移植到Mac。 我遇到了一些使用typesin_addr代码,并在这里find了Windows实现的文档: http : //msdn.microsoft.com/en-us/library/windows/desktop/ms738571%28v=vs.85%29的.aspx

特别是我遇到的问题是代码试图访问in_addr,编译器(CLang)抱怨不存在的S_un属性。 看一下Mac实现的定义,我得到这个(在usr/include/netinet/in.h ):

struct in_addr { in_addr_t s_addr; };

…和in_addr_t定义如下(在usr/include/sys/types.h ):

typedef __uint32_t in_addr_t;

有没有人知道一个很好的解决方法,或者如果在Mac上的IPv4地址表示更紧密地绑定到Windows实现?

GetShortPathName不可预知的结果

CMake:无论如何强制链接库?

如何知道为什么GetPrivateProfileInt / String失败

Windows如何解决冲突的FileSystem权限/权限?

如何使用CreateProcess()和CreatePipe()从cmd.exe读取输出

线程调度中是否有简单而有意识的图/algorithm?

Qt4不会用CMake编译

dwPageSize和dwAllocationGranularity之间的关系

如何在Windows机器上虚拟扩展屏幕?

VirtualAlloc的混淆 – 是否只为页面

看到我的评论。 但也…你可以在你的代码中实现窗口声明(只是不要叫它in_addr,以避免冲突)。 你可以做这样的事情:

typedef struct Win_in_addr { union { struct { __uint8_t s_b1,s_b2,s_b3,s_b4; } S_un_b; struct { __uint16_t s_w1,s_w2; } S_un_w; __uint32_t S_addr; } S_un; } Win_IN_ADDR,*Win_PIN_ADDR,*Win_LPIN_ADDR;

但是请注意,这不是可移植的,只能在小端cpu上按照预期工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐