关于代码中区分debug与release、32位与64位、xp还是win7编译的宏定义
2015-06-10 15:50
459 查看
在写代码的过程中,我们经常需要考虑这样的一些问题:有一部分代码片段只有在32位编译环境下编译才能通过,在64位编译环境下是无法编译通过的,那么怎样才能判断当前编译环境是32位编译还是64位编译?还有,如何判断当前编译是debug编译还是release编译?再者,有些API是在vista之后才出现的,那又该如何区分当前编译环境是xp还是win7? 这里做下备忘,省得忘了之后又要疯狂的google和百度。
1、判断是debug编译还是released编译
如果_DEBUG定义了表示是debug编译,否则是release编译
2、判断是32位编译还是64位编译
_WIN32表示是32位编译
_WIN64表示是64位编译
3、判断是xp编译还是win7编译
(_WIN32_WINNT > 0x600) 表示是win7编译
(_WIN32_WINNT < 0x600) 表示是xp编译
示例代码:
#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
#if (_WIN32_WINNT > 0x600)
ObGetObjectType();
#endif
注意:source文件中的SOURCE宏指定的.c文件,不可以通过#if #endif等条件编译来控制编译哪些.c文件
1、判断是debug编译还是released编译
如果_DEBUG定义了表示是debug编译,否则是release编译
2、判断是32位编译还是64位编译
_WIN32表示是32位编译
_WIN64表示是64位编译
3、判断是xp编译还是win7编译
(_WIN32_WINNT > 0x600) 表示是win7编译
(_WIN32_WINNT < 0x600) 表示是xp编译
示例代码:
#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
#if (_WIN32_WINNT > 0x600)
ObGetObjectType();
#endif
注意:source文件中的SOURCE宏指定的.c文件,不可以通过#if #endif等条件编译来控制编译哪些.c文件
相关文章推荐
- php phpqrcode 生成二维码
- java数据库 三种事务处理?
- C语言-编译
- php使用Jpgraph绘制饼状图的方法
- Python 中的 classmethod 和 staticmethod 有什么具体用途?
- Java连接HBASE数据库
- php的闭包(Closure)也就是匿名函数。
- Angular中springt文件的配置
- C++头文件编译问题
- C++头文件编译问题 分类: C/C++ 2015-06-10 15:48 32人阅读 评论(0) 收藏
- java正则表达式 match、find匹配位置
- Python进阶(上)
- php使用Jpgraph绘制柱形图的方法
- java.text.ParseException: Unparseable date: "2015-06-09 hh:56:19"
- java.text.ParseException: Unparseable date: "2015-06-09 hh:56:19"
- Debug on <python for android> or <kivy>
- 如何删除在Github中创建的项目
- Asp.net MVC中的ViewData与ViewBag
- Python基础(下)
- 文件间的编译依存关系 分类: C/C++ 2015-06-10 15:37 34人阅读 评论(0) 收藏