C99 和 C11 标准的区别
此文档列出 C99 和 C11 两个标准的主要区别。
1、新增多线程支持
引入 threads.h 头文件,包括 thrd_create() 创建线程的函数 和 mtx_t(互斥锁类型)和 cnd_t(条件变量类型)。
2、静态断言
支持 _Static_assert(编译时断言)。如:
_Static_assert(sizeof(int) == 4, "int must be 4 bytes");
3、对齐控制
_Alignas,指定对齐要求。_Alignof,获取对齐值。- 新增
stdalign.h头文件,提供alignas、alignof宏。
4、Unicode支持增强
加入 UTF-8/16/32 字符串字面值,新增头文件 uchar.h(Unicode工具)如:
char u8str[] = u8"UTF-8字符串";
char16_t u16str[] = u"UTF-16字符串";
char32_t u32str[] = U"UTF-32字符串";
5、移除和弃用
- 移除
gets()函数, C11 正式从标准库移除这个不安全函数。 - 变长数组改为可选,从 C99 的强制要求改为可选特性。
其它略!