web-dev-qa-db-ja.com

C17とは何ですか?また、言語にどのような変更が加えられましたか?

GCC 8に関するニュースをチェックしていたとき、私は saw 2017バージョンのC言語(C++ 17ではなく、実際にはC17)のサポートを追加しました。しかし、インターネット上でそれに関する情報を見つけることができません。

それはC11のような新しいISOバージョンですか、それともGCCチームがコンパイラの修正のために使用するコードネームですか?

56

GCC リファレンスによると、C17は、実際にはDR解像度が統合されたC11標準のバグ修正バージョンです

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は公開日ではなく__STDC_VERSION__値に対応することに注意してください。)

(GCCでの実装が必要なDR解決策がいくつかありますが、それは新しいオプションとは無関係です。)

そのため、C17には新しい機能は含まれていません。

Cppreference(Cの履歴) の意味:

今後の開発

C17次のマイナーなC言語標準リビジョンには、受け入れられたすべてのC11欠陥レポートが含まれますが、新機能はありません

更新:

  • 2018:C17(ISO/IEC 9899:2018)( ISO Store)( Final draftATOMIC_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]

51
msc

C17は、C規格の「バグ修正リリース」であり、「M.S Chaudhari」に気付いた方法です。ただし、Jens Gustedt本の著者"Modern C"によって作成された非常に有用な情報があります。


彼は、C17と比較したC11の次の変更リストを特定しました。

メインページへのリンク C17


また、このコンテンツはJensによって更新されます。ここで更新することができます Jeans Gustedt Blog .

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

13
Nick S