網(wǎng)站首頁 編程語言 正文
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
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-06-06 typescript使用class關鍵字定義一個類、static、readonly
- 2022-11-05 Nginx反向代理location和proxy_pass配置規(guī)則詳細總結_nginx
- 2022-11-21 基于C++實現(xiàn)一個日期計算器_C 語言
- 2022-04-11 springboot上傳文件到Nginx代理的FTP文件服務器
- 2023-04-07 React?useContext與useReducer函數(shù)組件使用_React
- 2022-03-07 Go?container包的介紹_Golang
- 2022-11-09 Android實現(xiàn)圖片上傳蒙層進度條_Android
- 2022-12-09 C#中async和await的深入分析_C#教程
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支