我应该在64位构build中同时定义_WIN32和_WIN64吗?

当我们从一个已经存在的32位项目中添加一个64位configuration时,Visual Studio会默认复制32位configuration。 VS甚至复制_WIN32
我所有的64位项目现在也定义_WIN32 ,尽pipe他们(64位PE)永远不能在32位Windows上运行。 我感到非常不舒服。

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

_WIN32并不意味着你的想法。 这意味着“我正在使用Windows API”。 32位后缀在Windows NT 3.1的时代被加入,与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 。