Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是POSIX,有没有其他可以替代它的接口标准? 我被C和C++编程的众多标准和接口弄糊涂了。有ansic、isoc、GLIBC、POSIX、Win32、MFC等等。这些标准之间有什么区别,它们之间有什么联系?在什么情况下,您会选择特定的标准?是否有图表显示了这些关系_C++_C_Posix_Standards_Standard Library - Fatal编程技术网

什么是POSIX,有没有其他可以替代它的接口标准? 我被C和C++编程的众多标准和接口弄糊涂了。有ansic、isoc、GLIBC、POSIX、Win32、MFC等等。这些标准之间有什么区别,它们之间有什么联系?在什么情况下,您会选择特定的标准?是否有图表显示了这些关系

什么是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 列表中的每种类

ANSI C/ISO C是设计用于支持各种不同系统的标准,并允许编译历史遗留代码。我们可以称之为“标准C”。因为C是标准化的,所以有很多实现

C标准的一半是指语言本身,其中包括关于可用类型、可使用语法等的具体保证。这些保证有时过于宽泛,难以令人满意地使用。例如,在标准C中,保证至少存在以下类型:

  • short int
    ,表示至少-32767..+32767
  • int
    ,它至少表示-32767..+32767
  • long int
    ,它至少表示-2147483647..+2147483647
列表中的每种类型都必须比上一种更宽,但系统有很大的余地来选择不同的大小。例如,在一台DSP或一台旧的超级计算机上,所有的类型可能都是完全相同的大小。也不能保证一个字节有8位(可能超过8位)

C标准的另一半指定标准库,例如每个头提供哪些函数。例如,
头必须定义
malloc()
函数

用标准C编写的程序几乎可以在任何地方运行,只要小心不要依赖于不可移植的结构。然而,C标准并没有提供太多的功能。。。因此,这些可移植程序只能在控制台上打开文件或读取用户的输入

标准C有几个版本。最常见的是C89/C90、C99和C11。发现只支持C90(例如,MSVC)的系统并不少见

POSIX是一个更大、更全面的标准,其中包括标准C。POSIX还指定了操作系统的各个部分。因为POSIX是标准化的,所以有很多实现

在POSIX系统上,C实现有一些限制。例如,在POSIX上:

  • 一个字节总是8位
  • 整数总是二的补码
  • /
    字符始终用作路径分隔符
  • 通过设置
    errno
POSIX还指定了标准库中的一些添加,例如

  • 网络套接字
  • 创建新流程
  • 多线程编程
  • 内存映射IO
为在POSIX上运行而编写的程序可以在Linux、Unix、OS X或其他兼容POSIX的系统上运行。这些程序通常需要额外的工作才能在Windows上运行。POSIX标准包括网络、进程创建、shell、终端和文件系统等接口。编写复杂的POSIX程序(如web服务器或命令行shell)并不太困难

POSIX有几个版本

GLibc是GNUC库。它实现了标准C库、C库的POSIX扩展以及一些额外的功能。GLibc没有标准化,只有一个实现

例如,GLibc提供了
asprintf()
,这类似于
sprintf()
,但它会自动分配缓冲区

使用GLibc扩展的程序通常不可移植,尽管某些扩展在BSD系统上也可用

Win32是特定于Windows的API。API提供了标准C中不可用的函数,例如用于创建图形用户界面的函数。Win32没有标准化,只有两种实现(Windows和WINE)。Win32提供了大量接口,例如:

  • 网络套接字
  • 创建新流程
  • 多线程编程
  • 内存映射IO
这些接口与POSIX重叠,但函数调用大多不同。例如,在Windows上可以使用
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-投票决定重新打开。我希望这不会成为你失落的周末。:)这是维基百科,所以请继续编辑,而不是评论,让我更新它。