C11 (C语言标准)

{{Sidebar
|name = C語言標準
|style = width:auto;background:#f5faff;font-size:90%;line-height:1.6em;
|titlestyle = font-size:130%;padding-left:0.4em;padding-right:0.4em;background:#cee0f2; display:block;margin-bottom:6px;
|title = C語言標準
|headingstyle = padding:0.1em 0.25em 0.15em;{}
|heading1 = K&R C • ANSI C • C99 • C11 • C18 • C2x
|navbar = none
}}
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版本起支持多线程

  • 增加了更多浮点处理巨集。
  • 匿名结构体/联合体支持。这个在gcc早已存在,C11将其引入标准。
  • 静态断言(),_Static_assert(),在解释 #if 和 #error 之后被处理。
  • 新的 fopen() 模式,(“…x”)。类似 POSIX 中的 O_CREAT|O_EXCL,在文件锁中比较常用。
  • 新增 quick_exit() 函数作为第三种终止程序的方式。当 exit()失败时可以做最少的清理工作。

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

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

参考

评论 (0)

  • 还没有评论,来抢沙发吧。