Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 确定是否在Windows或其他系统上编译_C_Include_Cross Platform_C Preprocessor_Platform Specific - Fatal编程技术网

C 确定是否在Windows或其他系统上编译

C 确定是否在Windows或其他系统上编译,c,include,cross-platform,c-preprocessor,platform-specific,C,Include,Cross Platform,C Preprocessor,Platform Specific,我目前正在开发一个跨平台的C应用程序。 是否存在仅在Windows上编译时定义的编译器宏,以便我可以#ifdef某些特定于Windows的#包含 典型示例是在WinSock和Berkeley套接字头之间进行选择: #ifdef _WINDOWS #include <winsock.h> #else #include <sys/socket.h> #include <netinet/in.h> #include <sys/u

我目前正在开发一个跨平台的C应用程序。 是否存在仅在Windows上编译时定义的编译器宏,以便我可以
#ifdef
某些特定于Windows的#包含

典型示例是在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
\ifdef\u窗口
#包括
#否则
#包括
#包括
#包括
#包括
#包括
#恩迪夫

所以我要找的是类似WINDOWS宏的东西。

您最好的选择是使用

_WIN32
<> P>编译时使用Visual C++编译器编写32位或64位Windows平台。我希望Windows的其他编译器也能定义它(英特尔C++编译器定义它,就像MINW GCC一样)。 为Win32和Win32 64的应用程序定义。始终定义

_WIN64  
为Win64的应用程序定义


来源:

使用
\u WIN32

参考:

  • (或者只需检查
    \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

如果是64位Windows,该怎么办?我想WIN32只定义在32位系统上,对吗?32位确实是用来将它与古老的16位版本的Windows区分开来的。在Win64中删除该定义会破坏太多内容,因此保留该定义不太麻烦。
_WIN64