当我们从一个已经存在的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 。