預處理器定義
🤦♀️ Microsoft 專用預定義宏
MSVC 支持以下預定義宏:
_WIN32
:當編譯目標為 32 位 ARM、64 位 ARM、x86 或 x64 時,定義為 1。 其他情況下則不定義。_WIN64
:當編譯目標為 64 位 ARM 或 x64 時,定義為 1。 其他情況下則不定義。
注意區分另一個宏 WIN32
,它是在Windows頭文件 minwindef.h
中定義的,我們也可以在 Visual Studio 的 預處理器定義
中進行定義,其配置后會生效在xxx.vcxproj 文件中,其Visual Studio命令行參數 /D
與源代碼文件開頭的 #define
指令具有相同的效果。默認情況下,與符號關聯的值為 1。
綜上所述, _WIN32
和 WIN32
在Visual Studio 控制台應用程序中, 都可以使用,但是,_WIN32
可用范圍更廣一些,更安全,更適合用來判斷Windows平台,畢竟其是在MSVC編譯器中進行了預定義。
經過測試, MSVC 和 MinGW-W64 都有預定義宏 _WIN32
,linux-gnu g++ 無。
🤦♂️ 在 Visual Studio 開發環境中設置預處理器定義選項
-
打開項目“屬性頁” 對話框。 有關詳細信息,請參閱在 Visual Studio 中設置 C++ 編譯器和生成屬性。
-
選擇 "配置屬性" " > c/c + + > 預處理器" 屬性頁。
-
打開 " 預處理器定義 " 屬性的下拉菜單,然后選擇 " 編輯"。
-
在 " 預處理器定義 " 對話框中,添加、修改或刪除一個或多個定義,每行一個或多個定義。 選擇“確定”以保存更改 。
不需要在此處指定的定義上包含 "/D" 選項前綴。 在屬性頁中,定義由分號分隔 (
;
) 。編輯后會生效在xx.vcxproj 文件中。
Reference
/D (Preprocessor Definitions) | Microsoft Docs
VS中添加預處理宏的方法 - rainbow70626 - 博客園 (cnblogs.com)
VS2010中屬性頁中,C/C++ -->預處理器定義 - J.M.Liu - 博客園 (cnblogs.com)
WIN32和_WIN32的區別_碧海凌雲的博客-CSDN博客
c preprocessor - What's the difference between the WIN32 and _WIN32 defines in C++ - Stack Overflow