日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

WIN32 預定義宏WIN32,_WIN32,_WIN64介紹使用

作者:kevin--你不知道的事 更新時間: 2023-10-14 編程語言

1.WIN32宏

在 Win32 配置下,WIN32 在“項目屬性-C/C++-預處理器-預處理器定義”里聲明了,而在 x64 配置下,這個常量并不在項目預定義列表中。這是否說明可以根據(jù) WIN32 來判斷是否在 x64 平臺呢?不。在 Windows SDK 的 minwindef.h 下第 37 行有如下定義:

#ifndef WIN32

#define WIN32

#endif

即是說,只要包含了 Windows.h,那么 WIN32 常量是肯定定義了的,所以不能用于判斷平臺環(huán)境。但是如果在預處理定義里刪掉 WIN32,又不包含 Windows.h,那么 WIN32 未定義

?

2._WIN32,_WIN64

_WIN32 和 _WIN64,這兩個比較特別,沒有任何顯式定義。在 Windows.h 里沒有,在“項目屬性-C/C++-預處理器-預處理器定義”下也沒有。根據(jù) MSDN,這是由編譯器(ml.exe/ml64.exe)內部定義的。具體描述是

?

  _WIN32:Defined for applications for Win32 and Win64.?Always defined.

?

  _WIN64:Defined for applications for Win64.

?

3總結

WIN32宏? ?--只要包含了 Windows.h,那么 WIN32 常量是肯定定義了的,所以不能用于判斷平臺環(huán)境

_WIN32? ? ?--32位和64位程序都有,且總是定義的.

_WIN64? ? --只有64位程序才有

?

4使用

WIN32/_WIN32 可以用來判斷是否 Windows 系統(tǒng)(對于跨平臺程序),

而 _WIN64 用來判斷編譯環(huán)境是 x86 還是 x64

常用代碼:

(1)判斷是不是windows平臺

#if _WIN32 || WIN32  //windows平臺
...
#else 
...
#endif

(2)判斷是不是64位環(huán)境還是32位

#ifdef _WIN64

#ifdef _DEBUG
#pragma comment(lib, "*x64d.lib")

#else
#pragma comment(lib, "*x64r.lib")
#endif

#else

#ifdef _DEBUG
#pragma comment(lib, "*x86d.lib")
#else
#pragma comment(lib, "*x86r.lib")
#endif

#endif

易犯錯誤案例(容易使用WIN32進行判斷,但是是錯誤的):

#ifdef WIN32

#ifdef _DEBUG
#pragma comment(lib, "*x86d.lib")
#else
#pragma comment(lib, "*x86r.lib")
#endif

#else

#ifdef _DEBUG
#pragma comment(lib, "*x64d.lib")

#else
#pragma comment(lib, "*x64r.lib")
#endif

#endif

?

?

?

原文鏈接:https://blog.csdn.net/wangkui1331/article/details/103491790

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新