wayne 发表于 2011-12-30 17:15:19

C 语言新标准——C11

http://sd.csdn.net/a/20111226/309686.html

[简讯]ISO(International Organization for Standardization)正式公布C语言新的国际标准草案。
之前被命名为C1X的新标准将被称为ISO/IEC 9899:2011。新的标准修订了C11版本,提高了对C++的兼容性,并将新的特性增加到C语言中。
新功能包括支持多线程, 基于ISO/IEC TR 19769:2004规范下支持Unicode,提供更多用于查询浮点数类型特性的宏定义和静态声明功能。根据草案规定,最新发布的标准草案修订了许多特性,支持当前的编译器。
今年10月份,ISO ITTF(Information Technology Task Force)开始接手最终草案审查,对此未发表任何评论。 该草案的修改是基于2011年4月通过的N1570 draftPDF。
英文出自:h-online.com

wayne 发表于 2011-12-30 17:18:30

wikipedia上的描述:
http://en.wikipedia.org/wiki/C11_(C_standard_revision)

wayne 发表于 2011-12-30 17:22:21

有人翻译成了中文:

http://wangcong.org/blog/archives/1843

根据 wikipedia 记载,相比 C99,C11 做了以下重要的更新:
1. 对齐处理操作符 alignof,函数 aligned_alloc(),以及 头文件 <stdalign.h>。见 7.15 节。
2. _Noreturn 函数标记,类似于 gcc 的 __attribute__((noreturn))。例子:
        _Noreturn void thrd_exit(int res);
3. _Generic 关键词,有点儿类似于 gcc 的 typeof。例子:
#define cbrt(X) _Generic((X), long double: cbrtl, \
                              default: cbrt, \
                              float: cbrtf)(X)
4. 静态断言( static assertions),_Static_assert(),在解释 #if 和 #error 之后被处理。例子:
        _Static_assert(FOO > 0, "FOO has a wrong value");
5. 删除了 gets() 函数,C99中已经将此函数被标记为过时,推荐新的替代函数 gets_s()。
6. 新的 fopen() 模式,(“…x”)。类似 POSIX 中的 O_CREAT|O_EXCL,在文件锁中比较常用。
7. 匿名结构体/联合体,这个早已经在 gcc 中了,我们并不陌生,定义在 6.7.2.1 p13。
8. 多线程支持,包括:_Thread_local,头文件 <threads.h>,里面包含线程的创建和管理函数(比如 thrd_create(),thrd_exit()),mutex (比如 mtx_lock(),mtx_unlock())等等,更多内容清参考 7.26 节。
9. _Atomic类型修饰符和 头文件 <stdatomic.h>,见 7.17 节。
10. 带边界检查(Bounds-checking)的函数接口,定义了新的安全的函数,例如 fopen_s(),strcat_s() 等等。更多参考 Annex K。
11. 改进的 Unicode 支持,新的头文件 <uchar.h> 等。
12. 新增 quick_exit() 函数,作为第三种终止程序的方式,当 exit() 失败时可以做最少的清理工作(deinitializition),具体见 7.22.4.7。
13. 创建复数的宏, CMPLX(),见 7.3.9.3。
14. 更多浮点数处理的宏 (More macros for querying the characteristics of floating point types, concerning subnormal floating point numbers and the number of decimal digits the type is able to store)。
15. struct timespec 成为 time.h 的一部分,以及宏 TIME_UTC,函数 timespec_get()。
gcc 4.6 中新增了新的选项 -std=c1x 来支持这一标准,更多支持参考这里。但是 glibc 相关的部分尚未实现,所以你还不能马上在 Linux 上体验最新的 C11 特性。

gxqcn 发表于 2011-12-31 08:27:46

期待,希望MS能迅速跟进该新标准。

风云剑 发表于 2011-12-31 09:34:55

现在还没有编译器能完整支持C11标准。
MS从来都是不理标准,VC6就是典型,估计是被骂的不行,从VC7开始和标准跟的近了,当然这次C11的支持至少也要等到VS2012了。

gxqcn 发表于 2011-12-31 09:44:51

新的标准修订了C11版本,提高了对C++的兼容性,并将新的特性增加到C语言中。
wayne 发表于 2011-12-30 17:15 http://bbs.emath.ac.cn/images/common/back.gif

C++本身要兼容C标准,现在C标准又反过来去向C++靠拢,它们是不是在相互促进发展?

wayne 发表于 2011-12-31 09:52:08

有点想念 马克思老人家了,他早就告诉过我们
矛盾的双方是对立统一的
在斗争中相互促进发展
:lol

gxqcn 发表于 2011-12-31 09:55:39

感觉他们不是“矛盾的双方”,更像是亲如兄弟的同门师兄弟啊。

wayne 发表于 2011-12-31 09:59:25

8# gxqcn
这倒也是,不是矛盾的两个极端,我引错了。

不过,亲兄弟之间也可以发生战争的
C++不是C的超集,
linux之父在邮件列表里对C++阵营的人 破口大骂,
很多很多。。。。。

这个时候,就有矛盾对立了,呵呵

gxqcn 发表于 2011-12-31 10:06:19

可能是,C++可以将架构设计得很优美;但若是糟糕的设计,又会导致整个系统层次紊乱,漏洞百出。
页: [1] 2
查看完整版本: C 语言新标准——C11