我正在开发一个项目,我们将当前、ntohl
和定义为标准头文件中的宏,大多数文件都包含该宏。这会在已经定义了这些符号的平台上导致问题,例如,winsock2.h 声明了具有上述相同名称的函数,并导致编译错误,因为这些声明被扩展为我的宏定义。在 Mac OS 上,我收到数以千计的编译器警告,因为 Mac OS 已经为您定义了这些宏。ntohs
htonl
htons
我想支持 Windows、Mac OS 和 Linux,并尽可能使用标准的 OS 函数或宏,如果它们没有贴花,则使用我自己的定义。做这个的最好方式是什么?
我努力了:
#if defined WIN32
#include <winsock2.h>
#endif
但这会导致编译错误,因为有很多函数名与我当前的大型代码库发生冲突。