Evg*_*kan 26
C11标准的良好概述:
该标准包括对C99语言和库规范的若干更改,例如:
_Alignas说明符,_Alignof运算符,aligned_alloc函数,<stdalign.h>头文件)_Noreturn函数说明和<stdnoreturn.h>头文件使用_Generic关键字的类型泛型表达式.例如,下面的宏cbrt(x)转换为cbrtl(x),cbrt(x)或cbrtf(x)取决于类型x:
#define cbrt(x) _Generic((x), long double: cbrtl, \
default: cbrt, \
float: cbrtf)(x)
Run Code Online (Sandbox Code Playgroud)多线程支持(_Thread_local存储类说明符,<threads.h>包括线程创建/管理功能的头文件,互斥锁,条件变量和特定于线程的存储功能,以及_Atomic类型限定符和<stdatomic.h>不间断对象访问).
char16_t以及char32_t用于存储UTF-16/UTF-32编码数据的类型,包括转换函数<uchar.h>和相应的u和U字符串文字前缀,以及UTF-8编码文字的u8前缀).gets功能,在以前的C语言标准修订版,ISO/IEC 9899:1999/Cor.3:2007(E)中已弃用,支持新的安全替代方案,gets_s.struct T { int tag; union { float x; int n; }; };.#if和#error,当类型是由翻译器理解."…x"后缀)open.这种行为就像O_CREAT|O_EXCL在POSIX,它通常用于锁定文件.quick_exit函数作为终止程序的第三种方式,如果终止exit失败,打算至少进行最小的取消初始化.real + imaginary*I如果imaginary是无穷大则可能不会产生预期值NaN).根据C 2011标准本身,以下是C99的主要变化:
前言
...
6第三版取消并取代第二版ISO/IEC 9899:1999,经ISO/IEC 9899:1999/Cor 1:2001,ISO/IEC 9899:1999/Cor 2:2004修正, ISO/IEC 9899:1999/Cor 3:2007.上一版本的主要更改包括:
- 条件(可选)功能(包括之前必需的功能)
- 支持多个执行线程,包括改进的内存排序模型,原子对象和线程局部存储(<stdatomic.h>和<threads.h>)
- 附加浮动-point characteristic macros(<float.h>)
- 查询和指定对象的对齐方式(<stdalign.h>,<stdlib.h>)
- Unicode字符和字符串(<uchar.h>)(最初在ISO/IEC TR 19769:2004中指定)
- 类型泛型表达式
- 静态断言
- 匿名结构和联合
- 否-return功能
-宏来创建复数(<complex.h>)
-打开文件进行独占访问的支持
-删除的gets功能(<stdio.h>)
-增加了aligned_alloc,at_quick_exit和quick_exit函数(<stdlib.h>)
-用于边界检查接口(最初在ISO规定的(条件)支持/ IEC TR 24731-1:2007)
- (条件)支持可分析性