什么是 C17? 语言有什么变化?

当我查看关于 GCC 8的新闻时,我了解到 锯子增加了对2017版本 C 语言的支持(不是 C + + 17,实际上是 C17)。但是我在网上找不到任何关于它的信息。

它是像 C11那样的新 ISO 版本,还是仅仅是 GCC 团队在编译器中进行一些更正时使用的代号?

37086 次浏览

根据 海湾合作委员会的参考资料,C17实际上是 C11标准的 错误修正版本,集成了 DR 分辨率。

C17 ,< strong > 具有 DR [缺陷报告]分辨率的 C11标准的 bug 修复版本 集成 ,很快就会进入投票。这个补丁添加了相应的 选项 -std=c17-std=gnu17(新的默认版本,替换 -std=gnu11作为默认值) ,-std=iso9899:2017作为错误修复版本 的标准,不需要 flag_isoc17或任何选项 兼容性警告; 但是,有一个新的 __STDC_VERSION__ 值,因此将新的 cpplib 语言 CLK_GNUC17CLK_STDC17添加到 支持在新选项中使用该新值 最终在2018年出版,并被称为 C18,选项别名 可以添加。但是请注意,-std=iso9899:199409对应于 __STDC_VERSION__值,而不是发布日期。)

(海湾合作委员会需要执行一些 DR 解决方案,但是 这与新选择无关。)

因此,在 C17中没有包含新的特性。

C 病史表示:

未来发展

下一次小 C 语言标准修订,将包括所有接受的 C11缺陷报告,但 没有新功能

更新:

  • 2018年: C17(ISO/IEC 9899:2018)(ISO存储)(最终稿)包括 ATOMIC_VAR_INIT的废弃和对 下列缺陷报告:

[ DR 400] [ DR 401][ DR 402][ DR 403], [ DR 404] [ DR 405][ DR 406][ DR 407], [ DR 410] [ DR 412][ DR 414][ DR 415], [ DR 416] [ DR 417][ DR 419][ DR 423], [ DR 426] [ DR 428][ DR 429][ DR 430], [ DR 431] [ DR 433][ DR 434][ DR 436], [ DR 437] [ DR 438][ DR 439][ DR 441], [ DR 444] [ DR 445][ DR 447][ DR 448], [ DR 450] [ DR 452][ DR 453][ DR 457], [ DR 458] [ DR 459][ DR 460][ DR 462], [ DR 464] [ DR 465][ DR 468][ DR 470], [ DR 471] [ DR 472][ DR 473][ DR 475], [ DR 477] [ DR 480][ DR 481][ DR 485], [ DR 487] ,< a href = “ http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm”rel = “ norefrer”> [ DR 491]

C17是一个“错误修复版”的 C 标准如何“ M.S Chaudhari”注意到。然而,有非常有用的信息准备的 Jens Gustedt的作者 "Modern C"的书。


他列出了与 C11相比 C17的以下变化清单:

链接到主页 C17


此外,此内容将由 Jens更新,您可以按照更新 这里是 牛仔裤 Gustedt 博客

P.S: before posting all this stuff I received approval from the author.