关于VS中区分debug与release,32位与64位编译的宏定义

9225人阅读 评论(3) 收藏 举报
分类:
在vs编程中,常常涉及到32位和64位程序的编译,怎么判断当前编译是32位编译还是64位编译?如何判断

是debug下编译还是release下编译?因为之前用到,这里记录一下,省的忘了又要疯狂的google。

1.判断是debug编译还是release编译。
如果_DEBUG定义了表示是debug编译,否则是release编译。

2.判断是32位编译还是64位编译。
在 Win32 配置下,_WIN32 有定义,_WIN64 没有定义。在 x64 配置下,两者都有定义。即在 VC 下,_WIN32 一定有定义。
因此,WIN32/_WIN32 可以用来判断是否 Windows 系统(对于跨平台程序),而 _WIN64 用来判断编译环境是 x86 还是 x64。附一个表:

常量\定义预定义选项Windows.hVC编译器
WIN32Win32√(minwindef.h) ×
_WIN32××
_WIN64××x64
   
最后附上根据相应编译情况,进行有条件的链接相应静态库的示例代码,其实就是一些宏定义语句的使用:

#include "json/json.h"
#ifdef _DEBUG
#ifndef _WIN64
#pragma comment(lib,"json/json_mtd.lib")
#else
#pragma comment(lib,"json/json_mtd_x64.lib")
#endif
#else
#ifndef _WIN64
#pragma comment(lib,"json/json_mt.lib")
#else
#pragma comment(lib,"json/json_mt_x64.lib")
#endif
#endif
using namespace Json;


_MSC_VER 定义编译器的版本。下面是一些编译器版本的_MSC_VER值:
MS VC++ 10.0 _MSC_VER = 1600
MS VC++ 9.0 _MSC_VER = 1500
MS VC++ 8.0 _MSC_VER = 1400

其中MS VC++ 10.0就是Visual C++ 2010,MS VC++ 9.0就是Visual C++ 2008,MS VC++ 8.0就是Visual C++ 2005。
查看评论

VS2015中#if DEBUG的使用(C#)

在C#中,我们希望有些代码在debug模式下能够执行,而在release模式下执行另外的代码。一种简单的操作办法是在当前.cs文件中开头部分定义一个宏定义,如#define DBG_MODE.然后在需...
  • ygrssm
  • ygrssm
  • 2017-08-21 15:02:49
  • 1827

将项目的平台由32位改为64位:VS2013修改编译平台的方法

[摘要:之后果为念见地一下64位的sizeof,以是设置装备摆设vs为64位的编译仄台,方式以下: 1、左键工程--属性 面击左上角的 设置装备摆设治理器 2、找到对应的项目,正在仄台一栏傍边面击下推...
  • u012556077
  • u012556077
  • 2015-12-17 22:53:36
  • 5848

VS判断windows动态链接库是x86还是x64(以vs2015为例)

VS判断windows动态链接库是x86还是x64 环境: 系统:Win10 环境:VS2015 64bit 方法 点击电脑左下角的开始按钮。 在弹出的菜单中找到Visual...
  • Alger_magic
  • Alger_magic
  • 2018-01-16 12:05:15
  • 116

编译器中和64位编程有关的预定义宏

本文对分别测试VC,MinGW,GCC 三种编译器,在32位和64位模式(共6种情况下),和64位编程有关的与预定义宏的值。对跨平台编程具有参考意义。...
  • liangbch
  • liangbch
  • 2014-06-30 19:29:03
  • 14178

VS中区分Debug和Realease、x86和x64的宏定义

1.判断debug版本和release版本 如果定义了_DEBUG表示debug版本,否则是release版本。 2.判断x86版本和x64版本 如果定义了_WIN64表示x64版本,否则是x8...
  • qq_21950929
  • qq_21950929
  • 2018-01-25 10:52:45
  • 131

VS2015--win32工程配置的一些想法之在 Visual Studio 2015 中进行调试的同时分析性能

出处: https://msdn.microsoft.com/zh-cn/magazine/dn973013(en-us).aspx许多开发商花了绝大多数时间获取应用程序才能正常发挥作用。更少的时间...
  • wangshubo1989
  • wangshubo1989
  • 2016-02-23 21:01:35
  • 4645

VS中添加预处理宏的方法

VS中添加预处理宏的方法:
  • finewind
  • finewind
  • 2014-08-17 20:50:56
  • 19024

宏_M_IX86,_M_AMD64和_M_X64

_M_IX86 : 32bit处理器_M_AMD64 : 64bit AMD处理器 (VC2008以前) _M_X64 : 64bit AMD处理器(VC2008及以后)_M_IX64 : 64bit...
  • HiHui
  • HiHui
  • 2010-11-01 15:31:00
  • 8835

visual studio中,利用宏判断当前是debug还是release

#ifndef  _DEBUG#pragma  comment ( linker , "/subsystem:/"windows/" /entry:/"mainCRTStartup/""  ...
  • lx1988cyk
  • lx1988cyk
  • 2011-03-31 17:57:00
  • 1569

Visual Studio属性配置中使用宏

在学习C语言的时候,我们曾经遇到过一个宏的概念。宏的作用机理本质上是宏的展开,C语言中的宏的用法也有很多种(水其实很深...),不过从感觉上来讲,人们大致上会在以下的场景中,利用宏来解决一些窘境:一是...
  • u010229420
  • u010229420
  • 2016-06-28 20:51:48
  • 6365
    个人资料
    等级:
    访问量: 82万+
    积分: 1万+
    排名: 1910
    简介
    ★★★★★★★★★★★★★★★★★★
    分布式仿真、虚拟现实、工业仿真
    UE4、Delta3D、OpenGL、OSG
    QQ:984175446
    ★★★★★★★★★★★★★★★★★★
    博客专栏
    最新评论