当我们向已经存在的32位项目中添加64位配置时,Visual Studio默认复制32位配置。甚至连_WIN32也被复制了。
现在我的所有64位项目都定义了_WIN32,尽管它们(64位PE)永远不会在32位Windows上运行,这让我很不舒服。
如果没有问题,我想删除_WIN32。但我不确定是否可以这样做。
如果我删除_WIN32的定义,是否可以?
当我们向已经存在的32位项目中添加64位配置时,Visual Studio默认复制32位配置。甚至连_WIN32也被复制了。
现在我的所有64位项目都定义了_WIN32,尽管它们(64位PE)永远不会在32位Windows上运行,这让我很不舒服。
如果没有问题,我想删除_WIN32。但我不确定是否可以这样做。
如果我删除_WIN32的定义,是否可以?
_WIN32并不是你想象中的意思。它的意思是“我正在使用Windows API”。在Windows NT 3.1时代添加了32后缀以使其与Windows版本3中使用的16位API区分开来。由于位数问题,此术语已经不再流行。在stackoverflow.com上,你可以看到这一点,[win32]标签会带你进入[winapi]。
不要删除它,因为你正在使用Windows API。
预定义宏的文档说明:
_WIN32: 适用于 Win32 和 Win64 应用程序,总是定义。
_WIN64: 适用于 Win64 应用程序。
因此,不仅应该_WIN32总是定义,而且在64位应用程序中也不会引起任何问题。因此,我建议您不要删除它。
你不应该自己定义它们。
工具链(编译器 + 系统头文件)会根据需要定义它们。
_WIN32:适用于Win32和Win64应用程序,始终定义。
_WIN64:适用于Win64应用程序。
更多详细信息请参见:预定义的宏。
简而言之,WIN32/_WIN32 用于判断是否使用 Windows(对于跨系统应用程序),而 _WIN64 用于告诉编译环境是 x86 还是 x64。
如果您想知道您的应用程序是否运行在 Windows x64 下,您应该使用 Windows API IsWow64Process 。