簡體   English   中英

多個平台的網絡/主機字節順序功能

[英]Network/Host Byte Order Functions for multiple platforms

我正在一個項目中工作,當前ntohlntohshtonlhtons被定義為大多數文件包含的標准頭文件中的宏。 這會在已經定義了這些符號的平台上引起問題,例如,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM