VS中 Debug与Release、_WIN32与_WIN64 difference

VS中 Debug与Release、_WIN32与_WIN64 difference

  • 我最最开始用的VS的配置管理器一直都是这样

在这里插入图片描述

一、Debug与Release

  • Debug——调试版,生成的.exe中包含很多调试信息,若直接发包,比较大;
  • Release——发布版

\newline
\newline

  • 如何区分是Debug编译还是Release编译
  • Debug编译有宏定义_DEBUG,若代码中定义了_DEBUG就表示是debug编译,否则是release编译。
    Eg: #ifdef _DEBUG
    …     // 调试时执行,发布时不执行
    #else
    …     //

二、_WIN32与_WIN64

  • _WIN32是32位编译; _WIN64是64位编译。
    • 之所以要分不同位数编译,根本目的就是提高软件的通用性,
  • 如果电脑操作系统位数不同,那么代码中基本数据类型所占的字节也不同。
  • 32位平台下long long是64位,而64位平台下,long 64位
  • 64位操作系统理论上可运行32位和64位软件,32位操作系统只能运行32位的软件。
    那么如何使软件在不同平台运行?方法就是宏定义:
    Eg:# ifdef _WIN64
    typedef long int int64_t;
    # else
    extension
    typedef long long int int64_t;
    \newline
    \newline
  • 如何区分是32位还是64位编译
  • 在Win32配置下,_WIN32有定义,_WIN64无定义。
  • x64 配置下,两者都有定义。
  • 可理解为32位不支持64位,而64位可以兼容32位。
  • VC下,_WIN32 一定有定义。
  • _WIN64 用来判断编译环境是 32位 还是 64位,
    • 而WIN32或者_WIN32 用来判断是否 Windows 系统(对于跨平台程序)。
  • 一般VS选用win32控制台程序,和win32编译方式,因为兼容性好,可在32位OS运行,也可在64位运行。

\newline
\newline

  • 应用场合
#ifdef _WIN64            // 说明是64位编译方式
typedef long long  intptr_t;
#else 
typedef _W64 int   intptr_t;
#endif
发布了447 篇原创文章 · 获赞 249 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/zhoutianzi12/article/details/103404840