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

Ben*_*min 26 windows configuration 32bit-64bit visual-studio visual-c++

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

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

Han*_*ant 59

_WIN32并不代表你的想法.这意味着"我正在使用Windows API".在Windows NT 3.1的时代添加了32个后缀,使其与Windows 3中使用的16位API不同.由于比特问题,这个术语已经失宠了.你可以在stackoverflow.com看到这个,[win32]标签带你到[winapi].

不要删除它,您正在使用Windows API.


Fré*_*idi 38

预定义宏的文档说:

_WIN32:为Win32和Win64的应用程序定义.始终定义.

_WIN64:为Win64的应用程序定义.

因此,不仅应_WIN32 始终定义,它不会在64位应用程序中导致任何问题.因此,我建议你不要删除它.


Ben*_*igt 10

你永远不应该定义其中任何一个.

编译器将根据需要定义它们.


Dan*_*Yan 6

\n

_WIN32\xef\xbc\x9a 为 Win32 和 Win64 应用程序定义。总是被定义的。

\n\n

_WIN64\xef\xbc\x9a 为 Win64 应用程序定义。

\n
\n\n

更多详细信息:预定义宏

\n\n

简单来说,WIN32/_WIN32用于判断您是否使用Windows(对于跨系统应用程序),而_WIN64用于判断编译环境是x86还是x64。

\n\n

如果您想知道您的应用程序是否在 Windows x64 下运行,您应该使用 Windows API IsWow64Process

\n