我应该在 64 位版本中定义 _WIN32 和 _WIN64 吗?

发布于 2024-11-19 23:43:35 字数 249 浏览 5 评论 0原文

当我们从已存在的 32 位项目添加 64 位配置时,Visual Studio 默认情况下会复制 32 位配置。 VS 甚至复制_WIN32
我所有的 64 位项目现在也定义了 _WIN32,尽管它们(64 位 PE)永远无法在 32 位 Windows 上运行。这让我很不舒服。

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

When we add a 64bit configuration from a 32bit project that has already existed, Visual Studio copies the 32bit configurations by default. VS even copies _WIN32
All my 64bit projects define also _WIN32 now, despite they(64bit PEs) never can run on 32bit Windows. It is very uncomfortable to me.

I'd like to remove the _WIN32 if it doesn't have any problem. I'm not sure about that.
Is it okay if I remove the _WIN32 definition?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

无语# 2024-11-26 23:43:35

_WIN32 并不意味着您所认为的那样。它的意思是“我正在使用 Windows API”。 32 位后缀是在 Windows NT 3.1 时代添加的,以使其与 Windows 版本 3 中使用的 16 位 API 区分开来。由于位数问题,该术语已不再受欢迎。您可以在 stackoverflow.com 上看到这一点,[win32] 标签会将您带到 [winapi]。

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

_WIN32 doesn't mean what you think it does. It means "I am using the Windows API". The 32 postfix was added back in the days of Windows NT 3.1 to make it distinct from the 16-bit API that was used in Windows version 3. This term has fallen out of favor because of the bitness problem. You can see this at stackoverflow.com, the [win32] tag takes you to [winapi].

Don't remove it, you are using the Windows API.

笔芯 2024-11-26 23:43:35

预定义宏的文档说:

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

_WIN64:为 Win64 应用程序定义。

因此,_WIN32 不仅应该始终被定义,而且它不会在 64 位应用程序中引起任何问题。因此,我建议您不要删除它。

The documentation for the predefined macros says:

_WIN32: Defined for applications for Win32 and Win64. Always defined.

_WIN64: Defined for applications for Win64.

So not only should _WIN32 always be defined, it does not cause any problem in 64-bit applications. Therefore, I'd suggest you don't remove it.

巡山小妖精 2024-11-26 23:43:35

你永远不应该定义它们中的任何一个。

工具链(编译器+系统头文件)将根据需要定义它们。

You should never define either of them.

The toolchain (compiler + system headers) will define them as appropriate.

葬﹪忆之殇 2024-11-26 23:43:35

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

_WIN64:为Win64应用程序定义。

更多详细信息:预定义宏

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

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

_WIN32:Defined for applications for Win32 and Win64. Always defined.

_WIN64:Defined for applications for Win64.

More detail: Predefined Macros .

To put it simply, WIN32/_WIN32 is used to tell whether you are using Windows(For crossing system application), while _WIN64 is used to tell the compiling environment is x86 or x64.

If you want to know whether your application is running under Windows x64, you should use Windows API IsWow64Process .

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文