C语言标准 —— C89(C90)、C99、C11、C17、C2X

news/2024/9/18 21:30:12/

C语言主要的三个标准:C89(C90)、C99、C11、

K&R C

指的是 C 语言的原始版本。1978年,C 语言的发明者丹尼斯·里奇(Dennis Ritchie)和布莱恩·柯林(Brian Kernighan)合写了一本著名的教材《C 编程语言》(The C programming language)。由于 C 语言还没有成文的语法标准,这本书就成了公认标准,以两位作者的姓氏首字母作为版本简称“K&R C”。

ANSI C(又称 C89 或 C90) 标准

由于C语言被各大公司所使用(包括当时处于鼎盛时期的 IBM PC),因此到了 1989 年,C语言由美国国家标准协会(ANSI)进行了标准化,此时C语言又被称为 ANSI C。

而仅过一年,ANSI C 就被国际标准化组织 ISO 给采纳了。此时,C语言在 ISO 中有了一个官方名称——ISO/IEC 9899: 1990。其中:

  • 9899 是C语言在 ISO 标准中的代号,像 C++ 在 ISO 标准中的代号是 14882;

  • 而冒号后面的 1990 表示当前修订好的版本是在 1990 年发布的。

对 于ISO/IEC 9899: 1990 的俗称或简称,有些地方称为 C89,有些地方称为 C90,或者 C89/90。不管怎么称呼,它们都指代这个最初的C语言国际标准。

这个版本的C语言标准作为 K&R C 的一个超集(即 K&R C 是此标准C的一个子集),把后来引入的许多非官方特性也一起整合了进去。其中包括了从 C++ 借鉴的函数原型(Function Prototypes),指向 void 的指针,对国际字符集以及本地语言环境的支持。在此标准中,尽管已经将函数定义的方式改为现在我们常用的那种方式,不过K&R的语法形式仍然兼容。

C99 标准

在随后的几年里,C语言的标准化委员会又不断地对C语言进行改进,到了 1999 年,正式发布了 ISO/IEC 9899: 1999,简称为 C99 标准。

C99 标准引入了许多特性,包括内联函数(inline functions)、可变长度的数组、灵活的数组成员(用于结构体)、复合字面量、指定成员的初始化器、对IEEE754浮点数的改进、支持不定参数个数的宏定义,在数据类型上还增加了 long long int 以及复数类型

毫不夸张地说,即便到目前为止,很少有C语言编译器是完整支持 C99 的。像主流的 GCC 以及 Clang 编译器都能支持高达90%以上,而微软的 Visual Studio 2015 中的C编译器只能支持到 70% 左右。ANSI C(又称 C89 或 C90)

C11 标准

2007 年,C语言标准委员会又重新开始修订C语言,到了 2011 年正式发布了 ISO/IEC 9899: 2011,简称为 C11 标准。

C11标准新引入的特征尽管没 C99 相对 C90 引入的那么多,但是这些也都十分有用,比如:字节对齐说明符、泛型机制(generic selection)、对多线程的支持、静态断言、原子操作以及对 Unicode 的支持

C17 标准

C17(也被称为为 C18)是于2018年6月发布的 ISO/IEC 9899:2018 的非正式名称,也是目前(截止到2020年6月)为止最新的 C语言编程标准,被用来替代 C11 标准。

C17 没有引入新的语言特性,只对 C11 进行了补充和修正

C2X 标准

标准化组织正在讨论 C 语言的下一个版本,据说可能会在2023年通过,到时就会称为 C23。

关于C语言的发展历史、语言特点等介绍可参考百度百科:https://baike.baidu.com/item/c%E8%AF%AD%E8%A8%80/105958?fr=aladdin。


http://www.ppmy.cn/news/164979.html

相关文章

windowslinux环境下实现ffmpegvlc rtsp本地视频、摄像头推流,VLC推拉流

一、windows环境 ffmpeg RTSP推流本地视频文件、摄像头,VLC拉流 参考博客 windows环境下,搭建RTSP视频推流服务器 1.环境安装 Windows 环境下使用 FFmpeg 推送本地视频文件、USB 摄像头为 rtsp 流,并使用 vlc 拉流播放 1.下载rtsp服务器&…

学编程能参加哪些比赛?

孩子学习编程可以参加这10个竞赛: 下面将会根据孩子所学的编程语言来列举孩子可以参加的竞赛: 一、Scratch编程可参加的比赛 1、全国中小学生电脑制作大赛 电脑制作大赛不能完全说是编程比赛,更多讲究艺术与科技结合。 评选项目要求学生使用计算机设计电子报、网页设计、F…

智慧办公室虚拟现实 VR 可视化

“虚拟现实”是来自英文“Virtual Reality”,简称 VR 技术,其是通过利用计算机仿真系统模拟外界环境,主要模拟对象有环境、技能、传感设备和感知等,为用户提供多信息、三维动态、交互式的仿真体验。 图扑软件基于自研可视化引擎 H…

Power BI 如何高效管理度量值和字段

内容说明 背景需求: 当分析场景涉及大量数据和分析度量值时,为了更好的区分原始数据和用于分析的度量值,需要合理安排和管理数据字段。 本文总结了三种方法: 移动度量值位置创建字段文件夹:子文件夹和多个文件夹创建…

华为认证 | HCIA-Datacom 考试大纲

今天给大家说点基础的,很多人对华为认证考试有了一定了解后,想要进一步了解具体的考试内容。 这篇先说HCIA-Datacom的具体考试大纲~ 01 华为HCIA-Datacom认证考试 02 华为HCIA-Datacom考试内容 HCIA-Datacom V1.0考试覆盖数通基础知识,包括&…

创维 Skyworth 安卓电视机 提示 键盘已锁定! 解决方案

创维 Skyworth 安卓电视机 提示 “键盘已锁定!” 解决方案 遥控器连续按 8 次 数字 0 键

创维电视安装第三方app

此方法针对原系统无U盘安装、应用市场中没有小程序情景使用, 1、准备创维电视机、电脑,电视机和电视在同一个局域网; 2、电视机开启adb; 启动电视机机后进入“系统设置”选择“关于本机”,接着进入“本机信息”&…

创维黄宏生、TCL李东生及康佳陈伟荣悲喜人生

创维集团原董事长黄宏生与TCL的李东生、康佳原掌门陈伟荣都是华南理工大学无线电78级的同学,曾经三星同辉,同为彩电业大佬,如今却悲喜浮沉迥然不同…… 1978年高考时,三个年轻人李东生、陈伟荣、黄宏生分别从惠州、罗定和海南岛考…

创维电视显示连接服务器失败怎么回事,创维电视显示已连接路由器,却无法联网-创维电视连接路由器显示连接失败...

家里创维电视已连接上无线网,可就是在电视上显示... 我家的也是一样,也是创维的55寸无线网络电视(内置机顶盒的,可以把有线电视卡直接插到电视上),刚开始买来的时候可以连上,后面插了有线之后就连不上无线网了。可以收…

康佳U86V9电视怎么样?康佳U86V9电视参数配置评测

康佳U86V9电视的边框和底座均采用了金属配置,还有底部的支架也是金属配置,因此在外部的质感上还是有不俗表现的;在沉浸式体验方面,康佳U86V9电视屏幕占比在95%-97%之间,全面屏设计,边框贴角和电视边框严格贴…

【企业化架构部署】Apache配置与应用

文章目录 一、构建虚拟web主机1.概述2.httpd服务支持的虚拟主机类型3.构建虚拟Web主机3.1基于域名的虚拟主机3.2基于IP地址的虚拟主机3.3基于端口的虚拟主机 4.Apache连接保持5.Apache访问控制 二、Apache日志管理rotatelogs分隔工具 三、总结1.Web虚拟主机部署步骤2.网页根目录…

创维电视开机停留在Android4.0,“创维酷开”电视打开后就一直停留在开机界面,也关不...-创维电视关不机...

“创维酷开”电视打开后就一直停留在开机界面,也关不... 操作方法如下: 1、电视机的电源故障。 解决方法:让专业的师傅拆机检测并更换电源。 2、电视机没有上电。 解决方法:将电视的电源打开。 3、电视电路出现虚焊现象。 解决方法&#xff1…

【生信】R语言在RNA-seq中的应用

R语言在RNA-seq中的应用 文章目录 R语言在RNA-seq中的应用生成工作流环境读取和处理数据由targets文件提供实验定义对实验数据进行质量过滤和修剪生成FASTQ质量报告 比对建立HISAT2索引并比对 读长量化读段计数样本间的相关性分析 差异表达分析运行edgeR可视化差异表达结果计算…

docker 安装各种基础环境

一、安装 mysql 1 、下载镜像文件 docker pull mysql:5.7 2、创建实例并启动 docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORDroot \ …

minio 多级目录 获取目录名 卡死问题【实战】

问题: 生产环境,由于存储文件太快,导致很快一个桶里百万文件,几个T的大小。 多级目录获取目录名是个问题,list_objects如果用recursivetrue递归,当目录很多且级数多时,卡死掉。 通过客户端进…

PolarDB

PolarDB PolarDB 是云数据库产品,由阿里云提供,它基于 MySQL 构建而成,但在某些方面进行了优化和改进,以提供更好的性能和可伸缩性。以下是 PolarDB 和原生 MySQL 在性能方面的一些对比: 扩展性和性能:Pol…

d610网络计算机,尼康D610评测:机身细节

●尼康D610机身细节 其实机身细节这个环节,尼康D610真的没啥能说的,因为几乎全部元素都跟D600一样。改进后的快门和反光板组件,不会再出现尘屑情况了,大家可以放心(同样的招数对圣斗士是不起作用的……)。 尼康D610新增的QC静音连…

【嵌入式环境下linux内核及驱动学习笔记-(14)linux总线、设备、驱动模型之platform】

目录 1、新驱动架构的导入1.1 传统驱动方式的痛点1.2 总线设备驱动架构 2、platform 设备驱动2.1 platform总线式驱动的架构思想2.2 platform _device相关的数据类型2.2.1 struct platform_device2.2.2 struct platform_device_id2.2.3 struct resource2.2.4 struct device 2.3…

Dell Inspiron 15 5000 series 设置u盘启动

前言 昨天,帮一个学妹装 win10 ,各种问题,差点装崩溃,现在给大家整理一下。 如何给 Dell Inspiron 15 5000 series 设置u盘启动。 进入BIOS 开机看到 DELL 的图标,按 F2 直接进入 bios 或 按 F12 进入 boot menu …

运行Intel realsense L515相机

运行Intel realsense L515相机 首先去官: https://www.intelrealsense.com/sdk-2/,按照上面的提示安装各种文件,然后输入realsense-viewer出现可视化窗口。 下面进行ros演示: 按照github上的步骤编译realsense-ros。 链接: https://github…