当我们从已经存在的32位项目添加64位配置时,Visual Studio默认会复制32位配置。 VS甚至复制 _WIN32
我的所有64位项目现在都定义了 _WIN32 ,尽管它们(64位PE)永远不能在32位Windows上运行。这对我来说非常不舒服。
如果它没有任何问题,我想删除 _WIN32 。我不确定。
如果我删除 _WIN32 定义可以吗?
答案 0 :(得分:54)
_WIN32并不意味着你的想法。这意味着“我正在使用Windows API”。在Windows NT 3.1的时代添加了32后缀,使其与Windows 3中使用的16位API不同。由于比特问题,这个术语已经失宠了。你可以在stackoverflow.com看到这个,[win32]标签带你到[winapi]。
不要删除它,而是使用Windows API。
答案 1 :(得分:36)
predefined macros的文档说:
_WIN32:为Win32和Win64的应用程序定义。始终定义。
_WIN64:为Win64的应用程序定义。
因此,_WIN32
不仅要定义,它不会在64位应用程序中造成任何问题。因此,我建议你不要删除它。
答案 2 :(得分:8)
你永远不应该定义它们中的任何一个。
编译器将根据需要定义它们。
答案 3 :(得分:3)
_WIN32:为Win32和Win64的应用程序定义。始终定义。
_WIN64:为Win64的应用程序定义。
更多细节:Predefined Macros。
简单地说,WIN32 / _WIN32用于判断您是否使用Windows(用于交叉系统应用程序),而_WIN64用于告诉编译环境是x86还是x64。
如果您想知道您的应用程序是否在Windows x64下运行,则应使用Windows API IsWow64Process 。