为什么软件使用Win32名称?


31

如果软件/库对Windows平台有某种支持,则它们几乎总是将其目录和变量命名为win32。这在C / C ++项目中最为普遍。甚至MinGW项目的目标是三重用途win32。是否有一个原因?为什么不使用Windows或Microsoft Windows这样的专有名称?命名选择是否存在法律障碍?

这个问题不是关于API的,而是正在使用的命名约定。当一个库支持其他操作系统时,它们通常使用适当的名称,例如linuxfreebsd或需要的任何特殊支持。但是当涉及到Windows时,它通常被缩写为win32,与其他语言相比显得有些奇怪。


11
因为32位应用程序不同于64位应用程序?
Oded

52
Win32是Windows API的名称,类似于Unix / Linux系统上POSIX的角色。该名称可能起源于32位处理器,但是应该将其视为历史文物。
阿蒙

4
为什么传统上使用bin来指示具有二进制可执行文件的目录?这只是一个约定。win32只是在32位Windows上运行的程序的简写。如果您喜欢将其称为flimflam,欢迎您这样做,尽管在您的项目中可能并不十分清楚。
尼尔

37
自90年代初以来,Win32一直在暗示16位Windows 3和32位更高版本之间的区别,因此它并未暗示32位代码。Windows的现代64位版本实现了本机64位API,它称为“ Win32”。它与32位API 兼容,因此保留了相同的名称,但是它是本机64位实现,对于64位库将其自身称为“ Win32”是很有意义的。“ Win64”实际上是指Itanium体系结构,而不是x86-64 / AMD64。
科迪(Cody Gray)

6
@Oded:win32是Windows从16位转换到32位后的保留时间。
whatsisname

Answers:


61

Win32是Windows API的惯用名称。该API指定应用程序如何与操作系统接口。它与Unix上的POSIX标准大致相当,但是Win32还涵盖了GUI和许多其他功能。

Win32 API不仅限于32位Windows安装。

Windows开发人员中心

Windows应用程序编程接口(API)使您可以开发在所有Windows版本上成功运行的桌面和服务器应用程序,同时利用每个版本独有的功能。

Windows API可以在所有基于Windows的桌面应用程序中使用,并且32位和64位Windows通常支持相同的功能。编程元素的实现上的差异取决于基础操作系统的功能。这些差异在API文档中有所说明。

注意 这以前称为Win32 API。Windows API这个名称更准确地反映了它在16位Windows中的根源以及对64位Windows的支持。

您不必使用Win32 API为Windows开发。替代方法是.NET类或Windows RT接口。

从技术上讲,有一个Win64变体。但是它与Win32的主要区别在于数据模型(指针的大小)。它不是一组独特的API:

Win64 API环境与Win32 API环境几乎相同,与从Win16到Win32的重大转变不同。现在将Win32和Win64 API合并在一起,称为Windows API。使用Windows API,您可以编译相同的源代码以在32位Windows或64位Windows上本地运行。要将应用程序移植到64位Windows,只需重新编译代码即可。

Windows头文件被修改,以便您可以将它们用于32位和64位代码。(来源

由于Win64并没有本质上的不同,因此您几乎永远不会看到针对win64源代码级别的项目,尽管较新的项目可能针对的winapi不是传统的win32。但是出于所有实际目的,所有这些名称均指代相同的API。


5
此外,Win32 API在其他操作系统(例如OS / 2,ReactOS)上受支持,/然后是Wine,它也是Win32 API的实现。
约尔格W¯¯米塔格

6
@UnmannedPlayer,嗯,Win32是目标平台的名称。我们知道Win32 Windows。正如上面的引用所解释的,如今的专有名称是“ Windows API”,但它描述的是同一件事。
阿蒙

8
“要将应用程序移植到64位Windows,只需重新编译代码即可。” ... riiiiiiiiiiiiiiiiiiight。
丹尼尔·卡米尔·科扎尔

7
@DanielKamilKozar这听起来并不疯狂-它是相同的API。当然,那可能是营销部门。请讲。但是经过一点纪律和足够的测试,编写可移植代码从根本上来说并不困难。重要的区别是在Win32中,int,long和指针类型为32位大。这种假设在Win64下不再成立,后者破坏了试图变得聪明的代码。但是,一旦代码变得可移植,Win32和Win64之间的区别最终仅是编译器选项而已。
阿蒙(Amon)

4
@amon:不幸的是,微软出于某种奇怪的原因决定使32位和64位应用程序使用注册表的不同区域,这使得一组相关应用程序不必要地难以共享设置,除非全部都是32位或全部是64位一点。是的,有一些解决方法,但是没有一个解决方案像使用相同的存储那么简单。
超级猫

29

因为Windows API已有30多年的历史,并且在PC为16位时就已经存在,然后出现32位,然后是Win32,然后是Win64。Windows开发中存在平台依赖性,因此您需要代码以匹配体系结构中的OS库(dll)。

https://zh.wikipedia.org/wiki/Windows_API#Versions

针对win32构建的Windows应用程序将在32位体系结构上运行,并且由于Windows操作系统提供了win32子系统,因此将在64位运行,从而使win32应用程序可在现代的64位Windows OS上运行。

尽管随着时间的流逝,win32的构建越来越少,但win32可能不会很快消失。当逐步淘汰win32构建时,可能会有一个win128,而win64将是新的win32。


3
新的Windows API称为WinRT。它与Win32有很多共同点,但也有很多不同-就像Win32与Win16(?)一样。
user253751 '17

10
@immibis WinRT是Microsoft可能希望成为“新”运行时的运行时。这是Windows应用商店的运行时,可在Windows 8 +,Windows RT和Windows Phone 8+上运行。您知道,对于那些没人喜欢的应用程序。
Metallkiller

谢谢你们都将WinRT API添加到此答案。我猜我属于不喜欢Win 8+非桌面应用程序的人群。但是看来微软确实已将Win32重命名为“ Windows API”:msdn.microsoft.com/en-us/library/windows/desktop/…我回答了为什么您会在现有软件中看到“ win32”引用的问题等
托马斯·卡莱尔

在过去的一个月中,有几位投了反对票,没有发表评论,以建议如何改善此答案。接受的答案基本上是通过说“因为它被命名为win32”来回答“为什么被称为win32”的问题。我支持我的回答,因为重点是在16位仍占多数的那一天,购买具有32位功能的计算机的人不想在您的硬件或软件体系结构中的任何地方看到或听到“ 16” 。因此,相应地对API进行了命名,可能不会考虑32位成为新的16位的十年。
托马斯·卡莱尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.