关闭

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

8290人阅读 评论(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。
2
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

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

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

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

在vs编程中,常常涉及到32位和64位程序的编译,怎么判断当前编译是32位编译还是64位编译?如何判断 是debug下编译还是release下编译?因为之前用到,这里记录一下,省的忘了又要疯狂的google。 1.判断是debug编译还是release编译。 如果_DE...
  • dijkstar
  • dijkstar
  • 2015-04-15 21:25
  • 12353

VS在代码中判断debug和release模式

采用_DEBUG关键字 #ifdef _DEBUG ... #else ... #endif在MFC下,可以用DEBUG关键字
  • Kelvin_Yan
  • Kelvin_Yan
  • 2015-10-12 13:58
  • 1928

C语言各种预编译宏总结

查看gcc所定义的宏的命令:cpp -dM /dev/null 命令一: cpp -dM /dev/null 命令二: gcc -dM -E - 1:OS MACRO:   WINDOWS: _WIN32、WIN32、_WIN64;   UNIX: unix、__unix、__...
  • u012842205
  • u012842205
  • 2015-07-20 21:35
  • 1261

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

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

关于DEBUG调试用的宏定义

在开发中我们常常需要对数据进行打印操作,这样我们才能更好的将shu'ju
  • cjh965063777
  • cjh965063777
  • 2014-08-27 12:17
  • 2788

VC(VS)的64位编程小结

1. 在Win7 x64下编程产生的程序,可以是Win32(x86),可以是x64的,都能运行,在【任务管理器 -> 进程】页面上,Win32的程序会以*32标记; 2. 高版本的VC,如VS2008,若产生了x64的程序,实际上定义了宏【_WIN64】,_WIN64可以用来判断当前程序是...
  • dijkstar
  • dijkstar
  • 2016-03-23 13:26
  • 2064

Visual Studio 2010工程项目中添加预编译宏

昨天工作中对一个project 重构时碰到一个很诡异的问题,编译输出如下错误: 1>RunLogicProxy.cpp(15): error C2660: 'xdrmem_create' : function does not take 4 arguments 1>R...
  • andrew_tu
  • andrew_tu
  • 2012-11-08 09:26
  • 2594

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

在vs编程中,常常涉及到32位和64位程序的编译,怎么判断当前编译是32位编译还是64位编译?如何判断 是debug下编译还是release下编译?因为之前用到,这里记录一下,省的忘了又要疯狂的google。 1.判断是debug编译还是release编译。 如果_DE...
  • dijkstar
  • dijkstar
  • 2015-04-15 21:25
  • 12353

vs中的一些编译宏定义

1._DEBUG  用来指示 当前编译是rlease  还是debug  ,可用这个宏定义 来区分d ,r库文件的链接 2.判断是32位编译还是64位编译。 在 Win32 配置下,_WIN32 有定义,_WIN64 没有定义。在 x64 配置下,两者都有定义。...
  • hero_heart
  • hero_heart
  • 2016-02-25 11:23
  • 2005
    个人资料
    • 访问:793029次
    • 积分:10447
    • 等级:
    • 排名:第1877名
    • 原创:242篇
    • 转载:47篇
    • 译文:2篇
    • 评论:292条
    简介
    ★★★★★★★★★★★★★★★★★★
    分布式仿真、虚拟现实、工业仿真
    UE4、Delta3D、OpenGL、OSG
    QQ:984175446
    ★★★★★★★★★★★★★★★★★★
    博客专栏
    最新评论