C11标准曾用名C1X。

C11标准是C语言标准的第三个版本,前一个标准版本是C99标准。2011年12月8日,国际标准化组织(ISO)和国际电工委员会

(IEC)旗下的C语言标准委员会正式发布了C11标准。

C11标准的最终定稿草案是免费开放的,但是正式标准文件是需要付费的。

当前,支持此标准的主流C++编译器有:GCC、Clang、Intel C++ Complier等。

相比C99的变化:

1.对齐处理操作符 alignof,函数aligned_alloc(),以及头文件<stdalign.h>

2._Noreturn函数标记,类似于GCC的__((noreturn))。ps:_Noreturn void thrd_exit(int res);

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

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

_Static_assert(FOO > 0, "FOO has a wrong value");

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

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

7.匿名结构体/联合体,这个早已经在 gcc 中了,我们并不陌生

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

9._Atomic类型修饰符和 头文件 <stdatomic.h>

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

11.改进的 Unicode 支持,新的头文件 <uchar.h> 等。

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

13. 创建复数的宏, CMPLX()

14.更多浮点数处理的宏 (More macros for querying the characteristics of floating point types, concerning subnormal floating point numbers and the number of decimal digits the type is able to store)。

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

C11还缺少什么?

1、对IEEE754标准-2008的半精度浮点数的支持。尽管遵循GNU C标准规范的编译器(GCC以及Clang等)使用了C扩展关键字__fp16,但是只能对半精度浮点数进行引用,而不能做任何算术操作。因此,这个特性应当在下一个C语言标准中立马加入进去的,建议使用_Half作为半精度浮点数类型的关键字。

2、匿名函数:匿名函数,也叫lambda表达式,是现代计算机编程语言的一个典范特性,在Clang编译器中已经通过blocks语法 [4]  进行了支持,该语法也被发表到了下一代C标准的提案 [5-6]  。Lambda表达式非常适用于多核多线程并行计算,而不仅仅只是用于语法糖。

3、增加对UTF-16字符编码字符串格式符的支持。在标准C语言中,直到C11还只能支持UTF-8编码字符串的格式,采用%s。而对于UTF-16编码字符串的各类操作都比较欠缺,而只有UTF-16转UTF-8的库函数c16rtomb以及UTF-8转UTF-16的标准库函数mbrtoc16可使用,因此在实际项目工程上,用起来十分繁琐。这里建议后续标准C语言采用%S表示UTF-16的字符串格式符,%s作为UTF-8字符串格式符,%C表示UTF-16字符,%c表示UTF-8字符。

C11与C99的变化对比相关推荐

  1. 2023一建各科教材新旧变化对比

    一建新教材都已经出来了,真的没有理由再拖着不复习了.一建各科新教材改动比例也随之出来了.其中经济5%.市政5%.水利7%.建筑7%.法规8%.管理10%.公路10%.机电12%.最高的是铁路17%,从 ...

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

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

  3. C标准-->C89/C99/C11

    版权声明:本文为CSDN博主「quectel-wifi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/xie ...

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

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

  5. C89、C99与C11区别

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

  6. C语言现行标准C11的新特性

    C11标准是 ISO/IEC 9899:2011 - Information technology – Programming languages – C 的简称,曾用名为C1X. C11标准是C语言 ...

  7. 运算放大器在强电磁干扰下会出现什么变化?

    一.为什么要讨论运算放大器的电磁干扰抑制性能 集成运算放大器对于输入信号差分放大工作性能会受到很多因素的影响.包括工作电压.环境温度.输入的共模信号.偏置电压.电流的变化等等.其中有一类干扰往往开始不 ...

  8. 对比3家平台,我总结了疫情数据可视化的8点经验

    www.pmcaff.com 本文为作者 吾某 于社区发布 开年以来,随着疫情方面的数据逐渐增多,一些互联网公司也纷纷发布一些可视化的数据产品服务,让用户可以实时并直观了解最新情况,可谓一个便民利器. ...

  9. pmbok第七版_PMBOK第七版要来了!都有哪些变化?你准备好了么?

    PMBOK第7版 #PMP##职场##项目管理##战略##价值# 2020年1月15日PMBOK ®第7版的征求意见稿发布,并于2020年1月14日结束意见征集,预计于今年第四季度发布. 基于我的项目 ...

最新文章

  1. 面向对象【day08】:类的特殊成员(一)
  2. 滴滴专车——司机提现流程
  3. mysql using filesort_mysql using filesort Using temporary
  4. 重装MS SQL Server 2000前必须彻底删除原安装文件!
  5. Ant build.xml程序简单说明
  6. php 算法 数字比较,数据两两比较的高效算法?
  7. 获取ntoskrnl的基址
  8. 一篇文章带你分清楚JWT,JWS与JWE
  9. 【Oracle的存储过程之面向对象之特性】
  10. 微信小程序在地图上标点 markers 画圈显示范围 circles
  11. 计算机组成原理计算tag,计算机组成原理计算题
  12. Kubernetes 中pod绑定node节点:固定节点nodeName和nodeSelector调度详解
  13. 毕业论文每周报告进度计算机,计算机毕业论文进度安排怎么写
  14. 成都理工计算机考研很难吗,成都理工大学考研难吗?一般要什么水平才可以进入?...
  15. FPGA之JESD204B接口——总体概要 首片
  16. 无法查看MSN聊天记录 总弹出下载.xml文件的对话框
  17. 详解KubeEdge边缘网络项目EdgeMesh
  18. 银河麒麟 kylin server v10上创建虚拟机(基于 鲲鹏920 CPU)
  19. 信息学奥赛一本通 1336 【例3-1】找树根和son(附含解题思路)
  20. 《机器学习实战》斧头书——第三章—决策树(1)——使用决策树预测你是否需要带隐形眼镜

热门文章

  1. PointRend 论文解析
  2. 天猫复购用户预测之DIN模型
  3. php 没有访问权限,PHP出现操作文件没有权限怎么办?
  4. es对日志数据进行索引生命周期管理
  5. QT + VS + C++ <Qtablewidget>
  6. 基于STM32单片机光学指纹识别模块(FPM10A)全教程(基于C语言)
  7. useEffect的第二个参数
  8. Labelme的安装及使用详细教程
  9. 外贸个人结汇金额超过5W上限怎么办,办理义乌个体户提升结汇上限!
  10. sta计算机控制局麻,Milestone STA计算机控制局部麻醉系统 STA-5220