C11 (C语言标准)

C11（也被称为C1X）指ISO标准ISO/IEC 9899:2011，在它之前的C语言标准为C99。这次修订新增了被主流C语言编译器(如GCC,Clang,Visual C++等)增加的内容，和引入了細部的内存模型以更好的执行多线程。之前C99的一些被推迟的计划在C11中增加了，但是对C99仍保留向后兼容。

GCC从4.6版本开始，已经可以支持一些C11的特性，Clang则是从3.1版本开始；glibc自2.28版本起支持多线程。

 新特性 
 对齐处理（）的标准化（包括_Alignas标志符，alignof运算符，aligned_alloc函数以及<stdalign.h>头文件）。
 _Noreturn 函数标记，类似于 gcc 的 __attribute__((noreturn))。
 _Generic 泛型巨集关键字。
 多线程（）支持，包括：
 _Thread_local存储类型标识符，<threads.h>头文件，里面包含了线程的创建和管理函数。
 _Atomic类型修饰符和<stdatomic.h>头文件。
 增强的Unicode的支持。基于C Unicode技术报告ISO/IEC TR 19769:2004，增强了对Unicode的支持。包括为UTF-16/UTF-32编码增加了char16_t和char32_t数据类型，提供了包含unicode字符串转换函数的头文件<uchar.h>.
 删除了 gets() 函数，使用一个新的更安全的函数gets_s()替代。
 增加了边界检查函数接口，定义了新的安全的函数，例如 fopen_s()，strcat_s() 等等。WG14 N1570 Committee Draft — April 12, 2011  Annex K Bounds-checking interfaces
 增加了更多浮点处理巨集。
 匿名结构体/联合体支持。这个在gcc早已存在，C11将其引入标准。
 静态断言（），_Static_assert()，在解释 #if 和 #error 之后被处理。
 新的 fopen() 模式，(“…x”)。类似 POSIX 中的 O_CREAT|O_EXCL，在文件锁中比较常用。
 新增 quick_exit() 函数作为第三种终止程序的方式。当 exit()失败时可以做最少的清理工作。

 支援 
在語言層級，MSVC、GCC 與 Clang 皆已支援 C11。

雖然語言層級很早就有編譯器支援，但執行緒等函式庫卻很長時間沒有實作，直到2018年 glibc 2.28 才開始支援。

 参考 

Category:C語言
Category:程式語言標準