1. 程式人生 > >關於程式碼中區分debug與release、32位與64位、xp還是win7編譯的巨集定義

關於程式碼中區分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檔案