2013-07-17 21 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 

然後你只需要確保所有的語言和系統#包括之前你自己,這是標準的做法反正發生。

相關問題