【发布时间】:2013-07-17 07:52:06
【问题描述】:
我正在处理一个项目,其中当前的ntohl、ntohs、htonl 和htons 被定义为大多数文件包含的标准头文件中的宏。这会在已经定义了这些符号的平台上导致问题,例如,winsock2.h 声明了具有上述相同名称的函数,并导致编译错误,因为这些声明被扩展为我的宏定义。在 Mac OS 上,我收到了数千个编译器警告,因为 Mac OS 已经为您定义了这些宏。
我想支持 Windows、Mac OS 和 Linux,并尽可能使用标准的 OS 函数或宏,如果它们没有贴花,则使用我自己的定义。最好的方法是什么?
我试过了:
#if defined WIN32
#include <winsock2.h>
#endif
但这会导致编译错误,因为有 很多 函数名与我当前的大型代码库发生冲突。
【问题讨论】:
标签: networking cross-platform endianness