当我查看有关 GCC 8 的新闻时,我看到他们增加了对 2017 版 C 语言(不是 C++17,实际上是 C17)的支持。但我在互联网上找不到任何关于它的信息。
它是像 C11 这样的新 ISO 版本,还是只是 GCC 团队用于在其编译器中进行一些更正的代号?
根据GCC参考,C17
实际上是标准的错误修复版本,C11
集成了 DR 分辨率。
C17是 C11 标准的错误修复版本,集成了 DR [缺陷报告] 解决方案,即将进行投票。该补丁增加了相应的选项
-std=c17
,-std=gnu17
(新的默认版本,替换-std=gnu11
为默认)-std=iso9899:2017
,。作为标准的错误修复版本,不需要flag_isoc17
或任何选项兼容性警告;但是,有一个新__STDC_VERSION__
值,因此添加了新的 cpplib 语言CLK_GNUC17
,CLK_STDC17
以支持将新值与新选项一起使用。(如果该标准最终在 2018 年发布并被称为C18
,则可以添加选项别名。但是请注意,这-std=iso9899:199409
对应于一个__STDC_VERSION__
值而不是发布日期。)(有几个 DR 解决方案需要在 GCC 中实施,但这与新选项无关。)
因此,C17 中没有包含新功能。
未来发展
C17下一个次要 C 语言标准修订版,将包括所有接受的 C11 缺陷报告,但没有新功能。
更新:
- 2018: C17 (ISO/IEC 9899:2018) ( ISO Store) ( Final draft
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]、[DR 491]
C17
是 C 标准的“错误修正版本”,“ M.S Chaudhari
”如何注意到。但是,本书Jens Gustedt
的作者准备了非常有用的信息。"Modern C"
C17
他确定了以下与 相比的变化列表C11
:
原子:初始化 (7.17.2, 7.31.8),一致性要求 (5.1.2.4),栅栏 (7.17.3 p11),函数或宏 (7.17.1 p6),无锁取决于类型 (7.17.5 p3),compare exchange 比较内存而不是值 (7.17.7.3), atomic_flag (7.17.18)。
线程: 虚假故障(7.26.3.5 p2、7.26.3.6 p2、7.26.4.5 p3)、同步(7.26.4 p1)、线程特定存储(
tss_t
)和线程退出(7.26.5 p3、7.26.5.5、7.26.6 )对齐:基本对齐(6.2.8),
_Alignas
(6.7.5),aligned_alloc
(7.22.3.1)序列点:完整表达式(6.8 p4),完整声明符(6.7..6 p3)
无限循环(6.8.5 p6)
保留标识符(7.1.3)
域或范围错误(7.12.1),
ilogb
,erfc
,lgamma
.
clock
(7.27.2.1) 规格不足规格不足
realloc
0 (7.22.3.5)附件 F:
FLT_ROUNDS
(F.2 p1)附件K:
tmpnam_s
,snprintf_s
,sprintf_s
,vsprintf_s
,get_s
,mbstowcs_s
,wcstombs_s
,snwprintf_s
,swprintf_s
,vsnwprintf_s
,vswprint_s
,mbsrtowcs_s
,wcsrtombs_s
.
链接到主页C17。
此外,此内容将由您更新,Jens
您可以在此处更新Jeans Gustedt 博客。
P.S: before posting all this stuff I received approval from the author.