C89 标准

1983 年美国国家标准局(American National Standards Institute,简称 ANSI)成立了一个委员会,专门来制定C语言标准。1989 年C语言标准被批准,被称为 ANSI X3.159-1989 “Programming Language C”。这个版本的C语言标准通常被称为 ANSI C。又由于这个版本是 89 年完成制定的,因此也被称为 C89。

C99 标准

在 ANSI C 标准确立之后,C语言的规范在很长一段时间内都没有大的变动。1995 年C程序设计语言工作组对C语言进行了一些修改,增加了新的关键字,编写了新的库,取消了原有的限制,并于 1999 年形成新的标准——ISO/IEC 9899:1999 标准,通常被成为 C99。

C99对C89的改变

1、增加restrict指针

2、inline(内联)关键字

3、新增数据类型 _Bool

4、对数组的增强,可变长数组,数组声明中的类型修饰符等

5、单行注释

6、分散代码与声明

7、预处理程序的修改

a、变元列表

b、_Pragma运算符

c、内部编译指令

d、新增的内部宏

8、for语句内的变量声明

9、复合赋值

10、柔性数组结构成员

11、指定的初始化符

12、printf()和scanf()函数系列的增强

13、C99新增的库

14、__func__预定义标识符

15、其它特性的改动

放宽的转换限制

不再支持隐含式的int规则

删除了隐含式函数声明

对返回值的约束

扩展的整数类型

对整数类型提升规则的改进

C11 标准

C11 标准由国际标准化组织(ISO)和国际电工委员会(IEC) 旗下的C语言标准委员会于 2011 年底正式发布,支持此标准的主流C语言编译器有 GCC、LLVM/Clang、Intel C++ Compile 等。

C11相比C99的变化

对齐处理操作符 alignof,函数 aligned_alloc(),以及 头文件 。

_Noreturn 函数标记,类似于 gcc 的 attribute((noreturn))。

_Generic 关键词,有点儿类似于 gcc 的 typeof。

静态断言( static assertions),_Static_assert(),在解释 #if 和 #error 之后被处理。

删除了 gets() 函数,C99中已经将此函数被标记为过时,推荐新的替代函数 gets_s()。

新的 fopen() 模式,(“…x”)。类似 POSIX 中的 O_CREAT|O_EXCL,在文件锁中比较常用。

匿名结构体/联合体。

多线程支持,包括:_Thread_local,头文件 ,里面包含线程的创建和管理函数(比如 thrd_create(),thrd_exit()),mutex (比如 mtx_lock(),mtx_unlock())等等。

_Atomic类型修饰符和 头文件 。

带边界检查(Bounds-checking)的函数接口,定义了新的安全的函数,例如 fopen_s(),strcat_s() 等等。

改进的 Unicode 支持,新的头文件 等。

新增 quick_exit() 函数,作为第三种终止程序的方式,当 exit() 失败时可以做最少的清理工作(deinitializition)。

创建复数的宏, CMPLX()。

更多浮点数处理的宏 。

struct timespec 成为 time.h 的一部分,以及宏 TIME_UTC,函数 timespec_get()。

参考资料:

C89(C90)、C99、C11——C语言的三套标准

C89标准和C99标准C11标准的区别

C语言的三套标准:C89、C99和C11

c语言对c99标准声明,C语言三大标准C89,C99和C11相关推荐

  1. 在c语言中怎么返回引用参数,C语言函数 函数的声明 C语言的头文件 #include的用法 形参和实参 函数的返回值 - 猫扑天空...

    C语言函数 一.是什么? 是指编程中对一块功能代码的封装,可以理解一个程序片段 二.有什么用? 可以封装代码,方便调用,提高复用性 三.怎么用? 定义:  返回值类型  函数名(形参类型 参数名1-. ...

  2. c语言常用的格式声明,c语言函数声明格式是什么

    c语言函数声明格式是什么 c语言函数声明格式是"函数类型 函数名称(参数列表);".在函数声明中的参数列表中,不需要给出具体的变量名称,但必须给出每个变量的类型. 函数声明,不是说 ...

  3. c语言中浮点数如何声明,C语言中浮点数定义和文本处理的配合

    零.C语言中float类型变量定义的诡异性 在C语言中,float类型的定义比较特殊,特别是对于小数点左右侧数字的定义看起来也比较诡异:例如这种".005","10.&q ...

  4. c语言对c99标准声明,C语言中C89与C99的区别

    1.增加restrict指针 C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只 有借助restrict指针表达式才能访问对象.restrict指针指针 ...

  5. KEIL编译器【C语言编译选项优化等级说明】【支持C99(变量声明在执行语句之后)】【反汇编设置】【C语言联合汇编】【use microlib选项】

    SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机.32位ARM Cortex-M0处理器.128kB Flash存储器.以及丰富的数字接口.SYD8801片上集成了 ...

  6. C语言三大标准C89,C99和C11

    C89 标准 1983 年美国国家标准局(American National Standards Institute,简称 ANSI)成立了一个委员会,专门来制定C语言标准.1989 年C语言标准被批 ...

  7. 【C语言】中的版本规范(C89 C99等)

    C语言中的版本 一.相关基础知识 ISO:国际标准化组织(International Organization for Standardization,ISO)简称ISO,是一个全球性的非政府组织,是 ...

  8. [GO语言基础] 三.变量声明、数据类型、标识符及编程练习12题

    作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了Go的编译运行 ...

  9. 【Golang第8章:面向对象编程】Go语言的结构体是什么,怎么声明;Golang方法的调用和声明;go语言面向对象实例,go语言工厂模式;golang面向对象的三大特性:继承、封装、多态

    介绍 这个是在B站上看边看视频边做的笔记,这一章是Glang面向对象编程 这一章内容较多,内容有Go语言的结构体是什么,怎么声明:Golang方法的调用和声明:go语言面向对象实例,go语言工厂模式: ...

  10. linux C语言perror()函数(将错误消息写入标准错误)(把一个描述性错误消息输出到标准错误 stderr。首先输出自定义字符串 str,后跟一个冒号,然后是一个空格)

    文章目录 man 3 perror man 3posix perror 20220723 C语言 | perror函数使用详解 man 3 perror PERROR(3) Linux Program ...

最新文章

  1. 设计模式C++实现(9)——享元模式
  2. 禅道启动mysql报错_测试工具之在Linux服务器上部署禅道Bug管理系统
  3. var result = ![] == []; console.log(result); // 结果是?为什么?
  4. Spring Security可以做的十件事
  5. 超极本认知六大误区详解:不只是轻薄+长续航
  6. java低配电脑运行,学会这几招,低配电脑用着也不卡啦!真心的实用 ,真是好方法。...
  7. android 控件突然变小,android中自定义控件
  8. 华中师范大学计算机学院郑,郑年亨-华中师范国家数字化研究中心
  9. Atitit. 资深高级软件工程师and 普通的区别 高度金字塔 深度 广度 1. 高度金字塔 深度 广度 1 1.1. 角色差异高度金字塔 使用者 维修者 制造者 1 1.2. 广度圈 1 1
  10. 软件测试设计用例面试题
  11. 蓝桥杯国赛 记录一下
  12. 张飞电子工程师速成视频教程百度云_张飞电子工程师速成视频教程第二部
  13. 一个自己实现的js表单验证框架。
  14. galaxy s8 android pc,三星S8/S8+发布!全面屏、智能助理、秒变PC,苹果8已败
  15. 解决集群报failure to login: for principal 。。。。Unable to obtain password from user错误
  16. solr dih有子查询时速度慢
  17. 【数据分析】——分析方法
  18. GPS网的基线计算以及平差处理(使用Python绘制误差椭圆,C++处理数据并输出Qxx矩阵)
  19. Vue微信网页微信支付
  20. txt文件-英汉字典

热门文章

  1. 商业计划书范文3000_生鲜电商商业计划书范文|优鲜选
  2. Java文件快速copy复制
  3. matlab报错索引超出数组范围
  4. Nsight Compute内存访问常用Metrics含义理解
  5. 水滴公司在纽交所挂牌上市;嘉楠科技完成1.7亿美元机构定增 | 美通企业日报...
  6. ITIL 4讲解: 变更管理
  7. WhereHows 数据发现和管理工具
  8. python科研向论文检索篇——提取PDF文字以供全文信息检索
  9. 十次方项目开发系列【1】:项目介绍和工程搭建
  10. MOODLE的安装与基本配置