关于VS中区分debug与release,32位与64位编译的宏定义
2014-04-23 10:58
621 查看
在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。附一个表:
最后附上根据相应编译情况,进行有条件的链接相应静态库的示例代码,其实就是一些宏定义语句的使用:
_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。
是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.h | VC编译器 |
WIN32 | Win32 | √(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。
相关文章推荐
- 我的设计(目录)
- PPT设计的四重境界(上)
- php 调用.net的webservice 需要注意的
- JS.json对象转化
- 【原创】Ubuntu下更改root用户密码以及添加/删除用户
- vmware下redhat5.4添加分区及挂载
- IOS开发---常用函数和常数
- 两种情况下的Android应用退出代码
- 重大发现
- Spring 事务配置
- 记录一下关于log的配置
- inner join和out join的区别
- 【原创】Ubuntu下更改root用户密码以及添加/删除用户
- ELF文件格式
- 总结如何实现Android浮动层,主要是dialog的使用
- SVN常用命令
- 十二星座性格特点
- LVS集群的体系结构及NAT 模式配置
- How to turn off checksum offload?
- 交换两个整数的值