5

現在、クロスプラットフォームのCアプリケーションを開発しています。Windows でのコンパイル中にのみ定義されるコンパイラ マクロがあるので、#ifdefWindows 固有の #include を実行できますか?

典型的な例は、WinSock と Berkeley ソケット ヘッダーの間で選択することです。

#ifdef _WINDOWS
   #include <winsock.h>    
#else
   #include <sys/socket.h>
   #include <netinet/in.h>
   #include <sys/un.h>
   #include <arpa/inet.h>
   #include <netdb.h>
#endif

私が探しているのは、_WINDOWSマクロのようなものです。

4

3 に答える 3

11

あなたの最善の策は、使用することです

_WIN32

これは、Visual C++ コンパイラを使用して 32 ビットまたは 64 ビットの Windows プラットフォーム用にコンパイルするときに定義されることが保証されています。Windows 用の他のコンパイラも同様に定義することを期待します (Intel C++ コンパイラは MinGW gcc と同様に定義します)。

于 2010-04-05T15:19:32.603 に答える
3

を使用し_WIN32ます。

参照:

于 2010-04-05T15:24:26.103 に答える
2
_WIN32  

Win32 および Win64 のアプリケーション用に定義されています。常に定義されています。

_WIN64  

Win64 のアプリケーション用に定義されています。

ソース :定義済みの ANSI C および Microsoft C++ 実装マクロを一覧表示します。

于 2010-04-05T15:23:26.107 に答える