织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>杂项技术>VC(MFC)>

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

jackyhwei 发布于 2017-07-27 18:44 点击:次 
在vs编程中,常常涉及到32位和64位程序的编译,怎么判断当前编译是32位编译还是64位编译?如何判断是debug下编译还是release下编译?因为之前用到,这里记录一下,省的忘了又要疯狂的google。
TAG: 64位  32位  WIN32  _WIN64  

在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.h VC编译器
WIN32 Win32 √(minwindef.h)  ×
_WIN32 × ×
_WIN64 × × x64
   
最后附上根据相应编译情况,进行有条件的链接相应静态库的示例代码,其实就是一些宏定义语句的使用:
  1. #include "json/json.h" 
  2. #ifdef _DEBUG 
  3. #ifndef _WIN64 
  4. #pragma comment(lib,"json/json_mtd.lib") 
  5. #else 
  6. #pragma comment(lib,"json/json_mtd_x64.lib") 
  7. #endif 
  8. #else 
  9. #ifndef _WIN64 
  10. #pragma comment(lib,"json/json_mt.lib") 
  11. #else 
  12. #pragma comment(lib,"json/json_mt_x64.lib") 
  13. #endif 
  14. #endif 
  15. 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。

(zhuyingqingfen)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201707/17517.html]
本文出处:CSDN博客 作者:zhuyingqingfen 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容