我应该在64位构建中定义_WIN32和_WIN64吗?

时间:2011-07-13 13:08:11

标签: windows visual-studio visual-c++ configuration 32bit-64bit

当我们从已经存在的32位项目添加64位配置时,Visual Studio默认会复制32位配置。 VS甚至复制 _WIN32
我的所有64位项目现在都定义了 _WIN32 ,尽管它们(64位PE)永远不能在32位Windows上运行。这对我来说非常不舒服。

如果它没有任何问题,我想删除 _WIN32 。我不确定。
如果我删除 _WIN32 定义可以吗?

4 个答案:

答案 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

相关问题