ntohl
現在、、、およびほとんどのファイルに含まれる標準ヘッダー ファイルでマクロとして定義されているプロジェクトに取り組んでいntohs
ます。これにより、これらのシンボルが既に定義されているプラットフォームで問題が発生します。たとえば、winsock2.h は上記と同じ名前の関数を宣言し、これらの宣言がマクロ定義に展開されるため、コンパイル エラーが発生します。Mac OS では、これらのマクロが既に定義されているため、何千ものコンパイラ警告が表示されます。htonl
htons
Windows、Mac OS、Linux をサポートし、可能な限り OS の標準機能またはマクロを使用し、それらがデカール化されていない場合は、独自の定義を使用したいと考えています。これを行う最善の方法は何ですか?
私が試してみました:
#if defined WIN32
#include <winsock2.h>
#endif
しかし、現在の大きなコードベースと多くの関数名が衝突するため、コンパイル エラーが発生します。