您的位置:首页 > 编程语言

关于代码中区分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文件

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: