zoukankan      html  css  js  c++  java
  • VS之 32 or 64

    一、Debug与Release

    1. 区别

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

      Release——发布版

    2. 如何区分是Debug编译还是Release编译
      Debug编译有宏定义_DEBUG,若代码中定义了_DEBUG就表示是debug编译,否则是release

      编译。

      Eg: #ifdef _DEBUG
      …     // 调试时执行,发布时不执行
      #else
      …     //

    二、_WIN32与_WIN64

    1. 定义

    _WIN32是32位编译; _WIN64是64位编译。

    之所以要分不同位数编译,最根本的目的就是提高软件的通用性,先了解几点常识:

    如果电脑操作系统位数不同,那么代码中基本数据类型所占的字节也不同。
       如:32位平台下long long是8个字节(64位),而64位平台下,long 是8个字节(64位)

    64位操作系统理论上可以运行32位和64位软件,而32位操作系统只能运行32位的软件。
    那么如何使软件在不同平台运行?方法就是宏定义:

    Eg:# ifdef _WIN64
    typedef long int int64_t;
    # else
    extension
    typedef long long int int64_t;

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

      在 Win32 配置下,_WIN32 有定义,_WIN64 没有定义。在 x64 配置下,两者都有定义。

      可以理解为32位不支持64位,而64位可以兼容32位。总之在 VC 下,_WIN32 一定有定义。

    因此,_WIN64 用来判断编译环境是 32位 还是 64位,而WIN32或者_WIN32 可以用来
    判断是否 Windows 系统(对于跨平台程序)。
        一般VS选用win32控制台程序,和win32编译方式,因为兼容性比较好,可以在32位操作
    系统上运行,也可以在64位操作系统上运行。
    3,应用场合
    1 #ifdef _WIN64            // 说明是64位编译方式
    2 typedef long long intptr_t;
    3 #else
    4 typedef _W64 int intptr_t;
    5 #endif

  • 相关阅读:
    uboot 环境变量
    U-boot的环境变量: bootcmd 和bootargs
    linux中的rootfs/initrd/ramfs/initramfs
    关于Linux启动时挂载rootfs的几种方式
    u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统
    MySQL列出当前月的每一天
    SQL 标量函数-----日期函数 day() 、month()、year()
    mysql 中 DATE_ADD函数和 DATE_SUB函数用法
    mysql 中 DATE_ADD(date,INTERVAL expr type)
    mysql中date_add()函数的使用?
  • 原文地址:https://www.cnblogs.com/Henry-ZHAO/p/12725256.html
Copyright © 2011-2022 走看看