2011年12月8号,ISO 发布了新的 C 语言的新标准——C11,之前被称为C1X,官方名称 ISO/IEC 9899:2011。
相比C99的变化
1. 对齐处理操作符 alignof,函数 aligned_alloc(),以及 头文件 <stdalign.h>。见 7.15 节。
2. _Noreturn 函数标记,类似于 gcc 的 __attribute__((noreturn))。例子:
_Noreturn void thrd_exit(int res);
3. _Generic 关键词,有点儿类似于 gcc 的 typeof。例子:
#define cbrt(X) _Generic((X), long double: cbrtl, \
default: cbrt, \
float: cbrtf)(X)
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 中了,我们并不陌生,定义在 6.7.2.1 p13。
8. 多线程支持,包括:_Thread_local,头文件 <threads.h>,里面包含线程的创建和管理函数(比如 thrd_create(),thrd_exit()),mutex (比如 mtx_lock(),mtx_unlock())等等,更多内容清参考 7.26 节。
9. _Atomic类型修饰符和 头文件 <stdatomic.h>,见 7.17 节。
10. 带边界检查(Bounds-checking)的函数接口,定义了新的安全的函数,例如 fopen_s(),strcat_s() 等等。更多参考 Annex K。
11. 改进的 Unicode 支持,新的头文件 <uchar.h> 等。
12. 新增 quick_exit() 函数,作为第三种终止程序的方式,当 exit() 失败时可以做最少的清理工作(deinitializition),具体见 7.22.4.7。
13. 创建复数的宏, CMPLX(),见 7.3.9.3。
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()。
分享到:
相关推荐
《C语言最新C11标准》是C语言发展的一个重要里程碑,它在1999年的C99标准基础上进行了更新和完善。C11标准,全称为ISO/IEC 9899:2011,是国际标准化组织(ISO)和国际电工委员会(IEC)共同发布的C语言编程语言的...
C语言规范之C11标准是C语言的最新官方版本,由国际标准化组织(ISO)在2011年发布,因此得名C11。这个标准是对C99的更新,引入了一系列新特性,旨在增强C语言的功能性和安全性。在深入探讨C11标准之前,我们首先需要...
2011年12月8日,ISO正式公布C语言新的国际标准草案:ISO/IEC 9899:2011,即C11 这是最新的C语言参考手册
本书基于C语言的最新标准ISO/IEC 9899:2011-C11标准,力求全面地介绍这门计算机语言的各个方面:词法元素、类型、声明、表达式、语句等,全书内容按概念和术语分类组织,示例丰富,查阅方便,适合具有一定C语言基础...
从最早的C89到最新的C2x,这些标准不仅定义了语言的语法和语义,还引入了新的特性,增强了C语言的功能性和安全性。以下是关于C语言各版本标准的详细概述: 1. **C89(也称为C90)**:这是C语言的第一个正式国际标准...
新版可能还包含了对C语言最新标准C11的更新和介绍。 通过学习这些资料,你可以从零基础开始掌握C语言,理解其基本语法和编程思想,进一步可以深入学习指针的高级用法、位操作、文件操作、内存管理等进阶主题。同时...
C99和C11是两个关键的C语言国际标准版本,分别发布于1999年和2011年,由国际标准化组织ISO(International Organization for Standardization)和IEC(International Electrotechnical Commission)联合制定。...
从技术上讲,C11标准与之前的草案(N1539)相比,新标准在右侧边缘用“diffmarks”标记了变化,用“*”标记删除的文本,用“‘”标记新增或改动的文本。通过这种方式,C11标准对代码的编写和程序的执行提出了更为...
C99和C++11是这两个语言的重要标准,引入了许多新的特性,优化了语法,并提升了语言的现代性。 C99是C语言的第三个官方标准,由国际标准化组织(ISO)和国际电工委员会(IEC)于1999年发布。这个标准对C89(也称为...
C语言的标准,即ISO/IEC 9899,通常被称为C89、C90、C99、C11或C17,这些版本代表了不同年份发布的修订版本。每一代标准都引入了新的特性,改进了语言的规范,以适应不断发展的软件工程需求。 C89/C90是第一个国际...
《C语言规范标准-C99(中文版)》是C编程语言的一个重要版本,由国际标准化组织ISO/IEC制定,旨在提供一个清晰且统一的编程标准,以便开发者编写出可移植性强、易于理解的代码。C99标准在1999年发布,相较于之前的C89...
C11标准的发布,使C语言的开发者有了一个新的参考点,以确保他们的代码不仅在现代系统上运行良好,而且未来在新的平台上也具有可维护性和可移植性。 C11标准主要改进包括: 1. 增加了新的数据类型,例如 _Bool, _...
C语言,作为一门强大的编程语言,其标准由国际标准化组织ISO制定,最新版本为C11。书中首先会介绍C语言的基础知识,包括变量、类型、运算符、控制结构、函数、预处理器等核心概念。这些基础知识是理解和编写C程序的...
这个压缩包包含了C语言的三个重要版本——C89/C90,C99,C11的标准文档,这些文档是理解C语言规范、编写标准合规代码的关键参考资料。 1. **C89/C90标准**:这是C语言的第一个官方标准,由国际标准化组织(ISO)在...
C99和C11标准的发布为C语言带来了许多现代化的特性,这些特性不仅提高了编程的灵活性和效率,也使得C语言能够更好地适应新的编程需求。通过理解和掌握这些新特性,开发者可以编写出更加高效、可维护的C代码。
语法扩展篇(第17~19章)讲述了GCC与Clang编译器对C语言的扩展,以及C语言的设计理念、未来C语言新添与排除特性。需要对底层交互与开发深入了解的读者大有裨益。 项目实践篇(第20~21章),UTF-8与UTF-16编码程序...
2011年,ISO推出了C11标准,进一步扩展了C语言,增加了原子操作、线程支持、通用指针初始化、类型安全的变长参数列表等特性,增强了对现代多核处理器的支持,并修复了一些已知问题。 本教程将详细讲解这些标准中的...
自1972年Bjarne Stroustrup在贝尔实验室首次设计并实现以来,C语言经历了多次更新和标准化,其中最著名的是C89(ANSI C),C99,C11和最新的C18。这些标准由国际标准化组织(ISO)和美国国家标准协会(ANSI)制定,...
2. **C语言标准**:C语言的发展经历了多个版本的标准,包括C89(ANSI C)、C99、C11和最新的C17。这些标准定义了语言的语法、类型系统、预处理器、内存模型等关键部分,确保了不同平台上的源代码可移植性。 3. **...
这表示C11标准在继承旧标准的基础上,也做了一些修改和新增功能,以适应新的编程实践和技术进步。 5. 知识更新和反馈: 此外,文档还邀请接受草案的读者提交评论,通知他们所知悉的任何相关专利权,并提供支持性...