新特性[2]有些和C++11是對應的,如線程和UTF-8:
- 對齊處理(Alignment)的標准化(包括_Alignas標志符,alignof運算符, aligned_alloc函數以及<stdalign.h>頭文件。
- _Noreturn 函數標記,類似於 gcc 的 __attribute__((noreturn))。
- _Generic 關鍵字。
- 多線程(Multithreading)支持,包括:_Thread_local存儲類型標識符,<threads.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() 等等。
- 增加了更多浮點處理宏。
- 匿名結構體/聯合體支持。這個在gcc早已存在,C11將其引入標准。
- 靜態斷言(Static assertions),_Static_assert(),在解釋 #if 和 #error 之后被處理。
- 新的 fopen() 模式,(“…x”)。類似 POSIX 中的 O_CREAT|O_EXCL,在文件鎖中比較常用。
- 新增 quick_exit() 函數作為第三種終止程序的方式。當 exit()失敗時可以做最少的清理工作。
- _Atomic類型修飾符和<stdatomic.h>頭文件。