程序锅

  • 首页
  • 分类
  • 标签
  • 归档
  • 关于

  • 搜索
基础知识 Etcd LeetCode 计算机体系结构 Kubernetes Containerd Docker 容器 云原生 Serverless 项目开发维护 ELF 深入理解程序 Tmux Vim Linux Kernel Linux numpy matplotlib 机器学习 MQTT 网络基础 Thrift RPC OS 操作系统 Clang 研途 数据结构和算法 Java 编程语言 Golang Python 个人网站搭建 Nginx 计算机通用技术 Git

C语言 | C 语言标准

发表于 2020-05-14 | 分类于 Clang | 0 | 阅读次数 1715

K&R C

C 语言最初由 Dennis Rithie 于 1969 年到 1973 年在 AT&T 贝尔实验室开发出来的,主要用于重新实现 Unix 操作系统。此时 C 语言叫做 K&R C(K 是 Kernighan 的首字母,R 是 Rithie 的首字母)。

K&R C 语言和后来标准化的 C 语言有很大的差异,比如

  • 如果函数的返回值为 int,则 int 可省,并且编译器不会有任何警告

    int my_function(){ }
    

    也可以写成

    my_function(){ }
    
  • 函数定义也不一样,现在定义一个函数是这样的

    void my_function(int a, char*p) {}
    

    如果使用 K&R C 语法定义的话得这样(在现行的标准中,这种方式已经被废弃了)

    void my_function(a,p)int a; char*p; {}
    

ANSI C

C 语言被各大公司所使用,因此到1989 年,美国国家标准协会(ANSI)对此进行了标准化;

C89/90

一年之后 ANSI C 被国际标准化组织 ISO 采纳。此时,C 语言在 ISO 中有一个官方名称--- ISO/IEC 9899:1990。对于 ISO/IEC 9899:1990 俗称或简称,有些地方称为 C89,有些地方称为 C90,或者 C89/90。

这个版本的 C 语言标准作为 K&R C 的一个超集(即 K&R C 是标准 C 的一个子集),把后来引入的许多非官方特性也一起整合了进去,比如:借鉴了 C++ 的函数原型、执行 void 的指针、对国际字符集以及本地语言环境的支持、函数定义的方式也改成现在常用的那张方式了(K$R 的语法形式仍然兼容)。

ISO/IEC 9899:1990 中的 9899 是 C 语言在 ISO 标准中的代号,像 C++ 在 ISO 标准中的代号是 14882;冒号后面的 1990 表示当前修订的好的版本是在 1990 年发布的。

C99

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

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

但是,很少有 C 语言编译器是完整支持 C99 ,像主流的 GCC 以及 Clang 编译器支持高达 90% 以上,而微软的 Visual Studio 2015 中的 C 编译器只能支持 70% 左右。

C11

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

C11 标准引入了:字节对齐说明符、泛型机制、对多线程的支持、静态断言、原子操作以及对 Unicode 的支持。

巨人的肩膀

C语言中文网:http://c.biancheng.net/view/143.html

维基百科:https://en.wikipedia.org/wiki/C_(programming_language)

C语言标准委员会的最新动态:http://www.open-std.org/jtc1/sc22/wg14/)

卷死我
dawnguo 微信支付

微信支付

dawnguo 支付宝

支付宝

  • 本文作者: dawnguo
  • 本文链接: /archives/32
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# 编程语言 # Clang
Java | Java 面向对象
数据结构和算法 | 数组之上-链表【3】
  • 文章目录
  • 站点概览
dawnguo

dawnguo

215 日志
24 分类
37 标签
RSS
Creative Commons
© 2018 — 2025 程序锅
0%