5

我目前正在开发一个跨平台的C应用程序。是否有任何编译器宏仅在 Windows 编译期间定义,所以我可以#ifdef使用一些 Windows 特定的#includes?

典型示例是在 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 的其他编译器也可以定义它(英特尔 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 回答