预处理器定义

预定义宏 | Microsoft Docs

/D(预处理器定义) | Microsoft Docs

🤦♀️ 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。

综上所述, _WIN32WIN32 在Visual Studio 控制台应用程序中, 都可以使用,但是,_WIN32 可用范围更广一些,更安全,更适合用来判断Windows平台,毕竟其是在MSVC编译器中进行了预定义

经过测试, MSVC 和 MinGW-W64 都有预定义宏 _WIN32 ,linux-gnu g++ 无。

🤦♂️ 在 Visual Studio 开发环境中设置预处理器定义选项

  1. 打开项目“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性
  2. 选择 "配置属性" " > c/c + + > 预处理器" 属性页。
  3. 打开 " 预处理器定义 " 属性的下拉菜单,然后选择 " 编辑"。
  4. 在 " 预处理器定义 " 对话框中,添加、修改或删除一个或多个定义,每行一个或多个定义。 选择“确定”以保存更改 。
    不需要在此处指定的定义上包含 "/D" 选项前缀。 在属性页中,定义由分号分隔 (;) 。
    编辑后会生效在xx.vcxproj 文件中。

vs提示处理器架构不匹配 vs预处理器定义_预处理

Reference

/D (Preprocessor Definitions) | Microsoft Docs

/D(预处理器定义) | Microsoft Docs

预定义宏 | Microsoft Docs

宏 (C/C++) | Microsoft Docs

预定义的宏 | Microsoft Docs

VS中添加预处理宏的方法 - rainbow70626

VS2010中属性页中,C/C++ -->预处理器定义

WIN32和_WIN32的区别、

c preprocessor - What's the difference between the WIN32 and _WIN32 defines in C++ - Stack Overflow