2013-07-17 22 views
0

我正在研究当前的一个项目ntohlntohshtonlhtons被定义为大多数文件包含的标准头文件中的宏。这会在已经定义这些符号的平台上导致问题,例如,winsock2.h声明具有上述相同名称的函数,并导致编译错误,因为这些声明已扩展到我的宏定义。在Mac OS上,我收到了数以千计的编译器警告,因为Mac OS已经为您定义了这些宏。针对多个平台的网络/主机字节顺序功能

我想支持Windows,Mac OS和Linux,并尽可能使用标准的OS函数或宏,如果它们没有被剥落,那么请使用我自己的定义。做这个的最好方式是什么?

我曾尝试:

#if defined WIN32 
    #include <winsock2.h> 
#endif 

但这会导致因为有很多的功能名称冲突在我当前的代码库大编译错误。

回答

1

这很难说是一个谜:

#ifndef ntohl 
#define ntohl(x) ... 
#endif 

然后你只需要确保所有的语言和系统#包括之前你自己,这是标准的做法反正发生。

相关问题