关于代码中区分debug与release、32位与64位、xp还是win7编译的宏定义

在写代码的过程中,我们经常需要考虑这样的一些问题:有一部分代码片段只有在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编译

 

示例代码:

  1. #ifdef _DEBUG  
  2. #ifndef _WIN64  
  3. #pragma comment(lib,"json/json_mtd.lib")  
  4. #else  
  5. #pragma comment(lib,"json/json_mtd_x64.lib")  
  6. #endif  
  7. #else  
  8. #ifndef _WIN64  
  9. #pragma comment(lib,"json/json_mt.lib")  
  10. #else  
  11. #pragma comment(lib,"json/json_mt_x64.lib")  
  12. #endif  
  13. #endif  

 

#if (_WIN32_WINNT > 0x600)

ObGetObjectType();

#endif 

 

注意:source文件中的SOURCE宏指定的.c文件,不可以通过#if  #endif等条件编译来控制编译哪些.c文件

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值