什么是POSIX,有没有其他可以替代它的接口标准? 我被C和C++编程的众多标准和接口弄糊涂了。有ansic、isoc、GLIBC、POSIX、Win32、MFC等等。这些标准之间有什么区别,它们之间有什么联系?在什么情况下,您会选择特定的标准?是否有图表显示了这些关系
ANSI C/ISO C是设计用于支持各种不同系统的标准,并允许编译历史遗留代码。我们可以称之为“标准C”。因为C是标准化的,所以有很多实现 C标准的一半是指语言本身,其中包括关于可用类型、可使用语法等的具体保证。这些保证有时过于宽泛,难以令人满意地使用。例如,在标准C中,保证至少存在以下类型:什么是POSIX,有没有其他可以替代它的接口标准? 我被C和C++编程的众多标准和接口弄糊涂了。有ansic、isoc、GLIBC、POSIX、Win32、MFC等等。这些标准之间有什么区别,它们之间有什么联系?在什么情况下,您会选择特定的标准?是否有图表显示了这些关系,c++,c,posix,standards,standard-library,C++,C,Posix,Standards,Standard Library,ANSI C/ISO C是设计用于支持各种不同系统的标准,并允许编译历史遗留代码。我们可以称之为“标准C”。因为C是标准化的,所以有很多实现 C标准的一半是指语言本身,其中包括关于可用类型、可使用语法等的具体保证。这些保证有时过于宽泛,难以令人满意地使用。例如,在标准C中,保证至少存在以下类型: short int,表示至少-32767..+32767 int,它至少表示-32767..+32767 long int,它至少表示-2147483647..+2147483647 列表中的每种类
,表示至少-32767..+32767short int
,它至少表示-32767..+32767int
,它至少表示-2147483647..+2147483647long int
头必须定义malloc()
函数
用标准C编写的程序几乎可以在任何地方运行,只要小心不要依赖于不可移植的结构。然而,C标准并没有提供太多的功能。。。因此,这些可移植程序只能在控制台上打开文件或读取用户的输入
标准C有几个版本。最常见的是C89/C90、C99和C11。发现只支持C90(例如,MSVC)的系统并不少见
POSIX是一个更大、更全面的标准,其中包括标准C。POSIX还指定了操作系统的各个部分。因为POSIX是标准化的,所以有很多实现
在POSIX系统上,C实现有一些限制。例如,在POSIX上:
- 一个字节总是8位
- 整数总是二的补码
字符始终用作路径分隔符/
- 通过设置
errno
- 网络套接字
- 创建新流程
- 多线程编程
- 内存映射IO
asprintf()
,这类似于sprintf()
,但它会自动分配缓冲区
使用GLibc扩展的程序通常不可移植,尽管某些扩展在BSD系统上也可用
Win32是特定于Windows的API。API提供了标准C中不可用的函数,例如用于创建图形用户界面的函数。Win32没有标准化,只有两种实现(Windows和WINE)。Win32提供了大量接口,例如:
- 网络套接字
- 创建新流程
- 多线程编程
- 内存映射IO
createmutex()
创建互斥体,在POSIX上可以使用pthread\u mutex\u init()
创建互斥体。例外情况是网络套接字,Windows和POSIX之间基本相同
为Win32编写的程序通常只能在Windows上运行,也可能在WINE上运行
MFC是Microsoft提供的一个库,它使编写Win32应用程序更容易。它实际上已经过时,不应用于新项目。MFC没有标准化,只有一个实现。harris,这不是一个坏问题,只是在本网站的限制范围内,这是一个很难回答的问题。有点像解释最高法院的判决及其40年的先例。如果你有一份,它的第2章讨论了Unix标准。@Duck yep,我也觉得这个问题太笼统了。呃Posix是unix的标准,在windows或者其他操作系统上,有没有相应的标准,我觉得这个基本的问题,要求用图表来说明标准之间的关系,是一个完全可以回答的问题。请重新打开。@R-投票决定重新打开。我希望这不会成为你失落的周末。:)这是维基百科,所以请继续编辑,而不是评论,让我更新它。