> 文章列表 > c11与c99的区别

c11与c99的区别

c11与c99的区别

C11标准与C99标准的主要区别包括:

1. 对齐处理 :

C11引入了`alignof`操作符,用于返回类型或对象的对齐要求。

增加了`aligned_alloc`函数,允许以指定的字节和对齐方式动态分配内存。

2. 函数属性 :

引入了`_Noreturn`函数属性,用于指示函数不会返回,类似于GCC的`__((noreturn))`。

3. 泛型编程 :

增加了`_Generic`关键词,提供了一种类似`typeof`的功能,允许编写更通用的代码。

4. 静态断言 :

引入了`static_assert`,在编译时进行断言检查,类似于C99中的`#if`和`#error`。

5. 多线程支持 :

C11增加了对多线程编程的支持,引入了相应的头文件。

6. Unicode支持 :

增强了C语言对Unicode的支持。

7. 结构体和联合体 :

引入了匿名结构体和联合体,提供了更灵活的编程选项。

8. 安全函数 :

增加了一些安全函数,如`memcpy_s`和`memset_s`,以防止缓冲区溢出等安全问题。

9. 其他变化 :

C99增加了对复数类型的支持,支持变长数组,引入了`restrict`关键字和`inline`函数等特性。

以上是C11相对于C99的一些主要变化。C11于2011年由ISO/IEC发布,是C语言标准的第三个版本

其他小伙伴的相似问题:

C11标准新增了哪些安全函数?

C99标准对复数类型的支持如何?

C11标准中如何实现内存对齐?

时尚男女装搭配技巧