1. 程式人生 > >關於VS中區分debug與release,32位與64位編譯的巨集定義

關於VS中區分debug與release,32位與64位編譯的巨集定義

在vs程式設計中,常常涉及到32位和64位程式的編譯,怎麼判斷當前編譯是32位編譯還是64位編譯?如何判斷

是debug下編譯還是release下編譯?因為之前用到,這裡記錄一下,省的忘了又要瘋狂的google。 1.判斷是debug編譯還是release編譯。 如果_DEBUG定義了表示是debug編譯,否則是release編譯。 2.判斷是32位編譯還是64位編譯。 在 Win32 配置下,_WIN32 有定義,_WIN64 沒有定義。在 x64 配置下,兩者都有定義。即在 VC 下,_WIN32 一定有定義 因此,WIN32/_WIN32 可以用來判斷是否 Windows 系統(對於跨平臺程式),而 _WIN64 用來判斷編譯環境是 x86 還是 x64。附一個表:
常量\定義 預定義選項 Windows.h VC編譯器
WIN32 Win32 √(minwindef.h)  ×
_WIN32 × ×
_WIN64 × × x64
最後附上根據相應編譯情況,進行有條件的連結相應靜態庫的示例程式碼,其實就是一些巨集定義語句的使用:
[cpp] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. #include "json/json.h"
  2. #ifdef _DEBUG
  3. #ifndef _WIN64
  4. #pragma comment(lib,"json/json_mtd.lib")
  5. #else
  6. #pragma comment(lib,"json/json_mtd_x64.lib")
  7. #endif
  8. #else
  9. #ifndef _WIN64
  10. #pragma comment(lib,"json/json_mt.lib")
  11. #else
  12. #pragma comment(lib,"json/json_mt_x64.lib")
  13. #endif
  14. #endif
  15. usingnamespace Json;