找回密码
 欢迎注册
查看: 15598|回复: 13

[分享] C 语言新标准——C11

[复制链接]
发表于 2011-12-30 17:15:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
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
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-12-30 17:18:30 | 显示全部楼层
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 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 特性。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-12-31 08:27:46 | 显示全部楼层
期待,希望MS能迅速跟进该新标准。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-12-31 09:34:55 | 显示全部楼层
现在还没有编译器能完整支持C11标准。
MS从来都是不理标准,VC6就是典型,估计是被骂的不行,从VC7开始和标准跟的近了,当然这次C11的支持至少也要等到VS2012了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-12-31 09:44:51 | 显示全部楼层
新的标准修订了C11版本,提高了对C++的兼容性,并将新的特性增加到C语言中。
wayne 发表于 2011-12-30 17:15


C++本身要兼容C标准,现在C标准又反过来去向C++靠拢,它们是不是在相互促进发展?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-12-31 09:52:08 | 显示全部楼层
有点想念 马克思老人家了,他早就告诉过我们
矛盾的双方是对立统一的
在斗争中相互促进发展
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-12-31 09:55:39 | 显示全部楼层
感觉他们不是“矛盾的双方”,更像是亲如兄弟的同门师兄弟啊。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-12-31 09:59:25 | 显示全部楼层
8# gxqcn
这倒也是,不是矛盾的两个极端,我引错了。

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

这个时候,就有矛盾对立了,呵呵
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-12-31 10:06:19 | 显示全部楼层
可能是,C++可以将架构设计得很优美;但若是糟糕的设计,又会导致整个系统层次紊乱,漏洞百出。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-26 04:39 , Processed in 0.045176 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表