ISO C 与POSIX 的关系
我们经常会看到”ISO C “以及 “POSIX 接口”,那么究竟什么是ISO C,究竟什么POSIX,它们之间有什么联系与区别呢?
ISO C就是 International Organization for Standardization 国际标准化组织为了提高C语言的移植性而设立的C语言标准,里面包含两部分:C语法及语义;C标准函数库。其中只是定义了C标准函数库的函数原型、函数功能,而并未定义函数的具体实现。
其中C标准函数库的头文件包括以下:
头文件 | 说明 |
---|---|
assert.h | 验证程序断言 |
complex.h | 复数运算 |
ctype.h | 字符分类与映射 |
errno.h | 出错码 |
fenv.h | 浮点环境 |
float.h | 浮点常亮以及特性 |
inttypes.h | 整形格式变换 |
iso646.h | 赋值、关系以及一元操作宏 |
limits.h | 编译时限制性常量 |
math.h | 数学函数 |
setjmp.h | 非局部跳转 |
signal.h | 信号 |
stdarg.h | 可变参数 |
stdbool.h | bool类型 |
stddef.h | 标准定义 |
stdint.h | 整形 |
stdio.h | 标准输入输出 |
stdlib.h | 标准函数 |
string.h | 字符串相关函数 |
time.h | 时间和日期 |
wctype.h | 宽字符分类与映射 |
wchar.h | 扩充的多字节和宽字符支持 |
这个标准粗来以后有啥用处哇?主要是这样子的,时间上有很多厂商、公司都在开发自己的C编译器,可是每个厂商的实现都可能不一样哇,如果没有标准的限制 那么大家对标准库函数的定义就会千差万别,那么这样就很不利于C程序在源码级从一种编译器移植到另外一种编译器···
举个例子 张三在VS 2015中写了一段很牛逼的代码,他觉得自己的代码特别稳,他写这些代码调用了很多VS给他提供的现成函数接口 例如像printf呀。。。。然后张三把代码丢给李四,可是李四用的是什么borland公司的C编译器。。。如果没事ISO C标准,那么vs和borland就可以将用一个printf解释为不同含义···,例如VS认为printf应该是输出函数,而borland却认为这个是输出函数。
如果有两个编译器都声称他们遵循ISO C标准,那么凡是ISO C白字黑字规定了的,两个编译器都应该严格执行。
POSIX 是Portable Operating System Interfaces 的缩写,是由IEEE制定胡标准簇。这些标准的制定目的是为了提升应用程序在不同UNIX系统环境之间的可移植性。这个标准是ISO C的超集。 它不仅包含ISO C部分,还定义了很多系统服务接口,例如:socket相关接口,pthread线程相关接口等。同样的,POSIX也只是定义接口,而不定义具体的实现。
POSIX标准定义的头文件包括:
<aio.h>
<arpa/inet.h>
<assert.h>
<complex.h>
<cpio.h>
<ctype.h>
<dirent.h>
<dlfcn.h>
<errno.h>
<fcntl.h>
<fenv.h>
<float.h>
<fmtmsg.h>
<fnmatch.h>
<ftw.h>
<glob.h>
<grp.h>
<iconv.h>
<inttypes.h>
<iso646.h>
<langinfo.h>
<libgen.h>
<limits.h>
<locale.h>
<math.h>
<monetary.h>
<mqueue.h>
<ndbm.h>
<net/if.h>
<netdb.h>
<netinet/in.h>
<netinet/tcp.h>
<nl_types.h>
<poll.h>
<pthread.h>
<pwd.h>
<regex.h>
<sched.h>
<search.h>
<semaphore.h>
<setjmp.h>
<signal.h>
<spawn.h>
<stdarg.h>
<stdbool.h>
<stddef.h>
<stdint.h>
<stdio.h>
<stdlib.h>
<string.h>
<strings.h>
<stropts.h>
<sys/ipc.h>
<sys/mman.h>
<sys/msg.h>
<sys/resource.h>
<sys/select.h>
<sys/sem.h>
<sys/shm.h>
<sys/socket.h>
<sys/stat.h>
<sys/statvfs.h>
<sys/time.h>
<sys/times.h>
<sys/types.h>
<sys/uio.h>
<sys/un.h>
<sys/utsname.h>
<sys/wait.h>
<syslog.h>
<tar.h>
<termios.h>
<tgmath.h>
<time.h>
<trace.h>
<ulimit.h>
<unistd.h>
<utime.h>
<utmpx.h>
<wchar.h>
<wctype.h>
<wordexp.h>
ISO C 与POSIX 的关系相关推荐
- 【概念的辨异】—— ISO C 与 POSIX C(C standard library 与 C POSIX library)
ISO C 表示 C Standard Library,也就是 C 标准库. 二者的主要区别在于: POSIX 是 C 标准库的超集(也即是从内容上,C 标准库是 POSIX 库的一部分,POSIX ...
- UNIX 标准化 --ISO C标准 IEEE POSIX 标准 Single Unix Specification(SUS)
原文地址 为什么要进行标准化呢? 在早期,Unix应用程序虽然可以在不同版本的unix操作系统之间移植相当容易,但是随着Unix系统版本的剧增以及他们的差别越来越大,不同版本的unix系统的应用程序 ...
- glibc版本查看_Linux开发必知内容整理 | libc、glibc和glib的关系
在进行Linux开发不可避免的要调用一些系统的API,我们经常开到的概念有诸如glibc.libc和glib等等.那么这些系统库之前的关系是什么样的呢?下面小编带大家了解一下这些库之前的共同点和差异, ...
- libc、glibc和glib的关系
转自: http://my.oschina.net/moooofly/blog/126260 http://nieyong.github.io/wiki_ny/glibc,%20eglibc%E5%9 ...
- c标准基本库函数:libc、glibc的关系
glibc 和 libc 都是 Linux 下的 C 函数库. libc 是 Linux 下的 ANSI C 函数库:glibc 是 Linux 下的 GUN C 函数库. ANSI C 和 GNU ...
- Linux 文件IO管理 - POSIX
以下是对POSIX的简短解释: POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操 ...
- 关于举办“ISO 15189 医学实验室认可内审员及医学实验室质量控制”以及“测量结果的计量溯源性要求”网络培训班的 通知...
关于举办"ISO 15189 医学实验室认可内审员及医学实验室质量控制"."测量结果的计量溯源性要求"以及实验室生物安全网络培训班的通知 随着现代医学科技的发展 ...
- 安卓如何安装linux的iso文件系统,如何使用EasyBCD 2.0引导ISO文件安装系统
EasyBCD是一个很强大的软件,通常情况下,我们用它来管理多系统的引导.比如用来引导windows ,linux,mac os组成的多系统.其实它的作用远不只这个(更多应用我以后再讲).下面我们来看 ...
- POSIX依从性测试技术及工具介绍
什么是POSIX 在开始POSIX依从性测试技术介绍以前,我们必须了解什么是POSIX,POSIX是Portable Operating System Interface ofUnix的缩写.由IEE ...
最新文章
- java点滴(6)之java引用
- CentOS7.5 使用二进制程序部署Kubernetes1.12.2(三)
- C++类的构造函数 后单冒号加基类 例如:CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
- GPU下train 模型出现nan
- TechEd2009
- regexbuddy使用记录
- java怎么使用wcf_如何使用WCF服务
- 很喜欢VS.NET 2003对条件编译的代码提示
- Error:Comments are not permitted in JSON
- origin 截断y轴
- 多个excel工作簿合并_Excel应用实践14:合并多个工作簿中的数据—示例3
- 这6点解释了罗永浩为什么要卖艺
- Linux如何创建用户及设置权限
- 顺丰php下单,顺丰订单查询
- B.FRiEND MK7机械式电竞键盘-Cherry樱桃轴搭配纯净白光!
- Blender图解教程:手把手教你做马里奥问号箱 一 强迫症慎用版(附模型下载)
- Android APP如何简单快速实现控制硬件设备并实现APP签名
- 人脸识别——基于百度智能云实现
- 关于网络广告的的概念
- DS18B20测量温度液晶1602显示