当我查看有关GCC 8的新闻时,我saw他们增加了对2017版C语言的支持(不是C ++ 17,真的是C17)。但我无法在互联网上找到有关它的任何信息。
它是像C11这样的新ISO版本,还是GCC团队用于编译器中某些更正的代号?
答案 0 :(得分:50)
根据GCC引用,C17
实际上是C11
标准的错误修复版,其中集成了DR分辨率。
C17 ,具有DR分辨率的C11标准的错误修复版本 综合,很快就会投票。此补丁添加相应的 选项
-std=c17
,-std=gnu17
(新的默认版本,替换-std=gnu11
为默认值),-std=iso9899:2017
。作为错误修复版本 在标准中,不需要flag_isoc17
或任何选项 兼容性警告;但是,有一个新的__STDC_VERSION__
值,因此添加了新的cpplib语言CLK_GNUC17
和CLK_STDC17
支持在新选项中使用该新值。 (如果标准 最终发布于2018年,被称为C18
,选项别名 可以添加。但请注意,-std=iso9899:199409
对应于a__STDC_VERSION__
值而不是发布日期。)(有一些DR决议需要在GCC中实施,但是 这与新选项无关。)
因此,C17中没有新功能。
未来发展
C17 下一个次要C语言标准修订版,将包括所有已接受的C11缺陷报告,但没有新功能。
<强>更新强>
- 2018:C17(ISO / IEC 9899:2018)(ISO商店)(Final draft)包括
ATOMIC_VAR_INIT
的弃用以及对{{1}}的修正 以下缺陷报告:[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]
答案 1 :(得分:13)
C17
是C标准的“错误修正版本”,如何引起“ M.S Chaudhari
”的注意。但是,Jens Gustedt
书的作者"Modern C"
准备了非常有用的信息。
他确定了C17
与C11
相比的以下变化列表:
原子: initialization (7.17.2, 7.31.8),相关性要求(5.1.2.4),篱笆(7.17.3 p11),函数或宏(7.17.1 p6),无锁取决于类型(7.17.5 p3),compare exchange compares memory and not value (7.17.7.3),atomic_flag (7.17.18)。
线程: spurious failures (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
,{{1} },mbstowcs_s
,wcstombs_s
,snwprintf_s
,swprintf_s
,vsnwprintf_s
,vswprint_s
,mbsrtowcs_s
。
链接到主页C17。
此外,此内容将由wcsrtombs_s
更新,您可以按照该更新
在Jeans Gustedt Blog。
Jens