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