[英]Is there a std::streambuf version that converts host to network byte order?
[英]Network/Host Byte Order Functions for multiple platforms
我正在一個項目中工作,當前ntohl
, ntohs
, htonl
和htons
被定義為大多數文件包含的標准頭文件中的宏。 這會在已經定義了這些符號的平台上引起問題,例如,winsock2.h聲明具有上述相同名稱的函數,並會導致編譯錯誤,因為這些聲明被擴展為我的宏定義。 在Mac OS上,我已經收到成千上萬的編譯器警告,因為Mac OS已經為您定義了這些宏。
我想支持Windows,Mac OS和Linux,並在可能的情況下使用標准的OS功能或宏,如果不對它們進行縮放,請使用我自己的定義。 做這個的最好方式是什么?
我努力了:
#if defined WIN32
#include <winsock2.h>
#endif
但這會導致編譯錯誤,因為與我當前使用的大型代碼庫有很多函數名沖突。
這幾乎不是一個謎:
#ifndef ntohl
#define ntohl(x) ...
#endif
然后,您只需確保所有語言和系統#includes都出現在您自己的語言和系統中,這仍然是標准做法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.