C/C++ _WIN32/WIN32/_WIN64/WIN64区别

最后更新于:2020-08-07 20:27:24

一._WIN32/WIN32/_WIN64/WIN64简介

在讲解_WIN32/WIN32/_WIN64/WIN64区别之前,首先需要明白下面几点内容:

1.windows操作系统可分为x86x64两种(x86简称32位,x64简称64位);

2.可执行程序exe同样也分为32位应用程序和64位应用程序

3.在windows64位可执行程序exe应用程序只能在64位的操作系统运行,而32可执行程序应用程序既能在64位的操作系统运行,也能在32位的操作系统运行,因为微软的向下兼容性做的很到位!

二._WIN32/WIN32/_WIN64/WIN64实战

1.如何区分是32位编译还是64位编译

在 x86 配置下,_WIN32 有定义,_WIN64 没有定义。

在 x64 配置下,两者都有定义。可以理解为 32 位不支持 64 位,而 64 位可以兼容 32 位。

总之在 VC 下,_WIN32 一定有定义。


因此,_WIN64 用来判断编译环境是 32位 还是 64位,而WIN32或者_WIN32 可以用来判断是否 Windows 系统(对于跨平台程序)。

一般visual studio 选用win32控制台程序,和win32编译方式,因为兼容性比较好,可以在32位操作系统上运行,也可以在64位操作系统上运行。

2._WIN32/WIN32/_WIN64/WIN64测试

将下面代码分别使用visual stdiox86x64编译,采用不同的编译选项输出的可执行程序exe输出内容各不相同,示例代码如下:

/************************************************************************/
/*@文件名      : _WIN32/WIN32/_WIN64/WIN64区别.cpp
/*@日  期      : 2020/7/27 19:37
/*@作  者      : 猿说编程
/*@公众号      : 猿说编程
/*@博客        : www.shuopython.com
/*@描述        : _WIN32/WIN32/_WIN64/WIN64 - C/C++教程
/************************************************************************/

#include <iostream>
#include <windows.h>
#include <math.h>
using namespace std;

int main(int argc, char *argv[])
{
#ifdef _WIN64
    printf("_WIN64 \n");
#endif

#ifdef _WIN32
    printf("_WIN32 \n");
#endif

#ifdef WIN32
    printf("WIN32 \n");
#endif // WIN32

#ifdef WIN64
    printf("WIN64 \n");
#endif // WIN32

    system("pause");
    return 0;
}

如果visual studio使用x86编译,那么会生成32位可执行程序,控制台显示:

_WIN32
WIN32
请按任意键继续. . .

如果visual studio使用x64编译,那么会生成64位可执行程序,控制台显示:

_WIN64
_WIN32
WIN32
请按任意键继续. . .


猜你喜欢

1. 三目运算符

2. 逗号表达式

3. NaN(Not a Number)

4. memcpy/strcpy/strcpy_s区别

5. unicode和多字节区别




转载请注明: 猿说编程 » C/C++教程 » _WIN32/WIN32/_WIN64/WIN64区别



技术交流、商务合作请直接联系博主
扫码或搜索:猿说编程

python/C++教程

猿说编程
微信公众号 扫一扫关注

赞赏

微信赞赏支付宝赞赏