预处理器定义
预处理器定义
🤦♀️ 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

浙公网安备 33010602011771号