2017-11-28 273 views
14

Podczas sprawdzania wiadomości o GCC 8, I saw dodałem obsługę wersji C języka 2017 (nie C++ 17, naprawdę C17). Ale nie mogę znaleźć żadnych informacji na ten temat w Internecie.Co to jest C17 i jakie zmiany wprowadzono w tym języku?

Czy jest to nowa wersja ISO, jak C11, czy tylko nazwa kodowa używana przez zespół GCC do wprowadzania poprawek w kompilatorze?

+0

Użytkownik może publikować do określonej liczby (dwóch?) Technicznych sprostowań (TC) do normy ISO. Jeśli potrzebujesz dalszej korekty po wydaniu X liczby TC, nowa wersja standardu musi zostać wydana. Podejrzewam, że tak jest w tym przypadku. – Lundin

Odpowiedz

12

Według GCC odniesienia C17 jest rzeczywiście wersja bug-fix standardu z dr rozdzielczościach zintegrowanych z C11.

C17, wersja bug-fix standardu C11 z uchwał DR zintegrowanych, wkrótce pójdą do urn. Ta poprawka dodaje odpowiadające opcje -std=c17, (nowa domyślna wersja, zastępująca domyślnie -std=gnu11), -std=iso9899:2017. Jako poprawka w wersji standardowej, nie ma potrzeby, aby flag_isoc17 lub żadnych opcji dla ostrzeżeń o kompatybilności ; istnieje jednak nowa wartość: __STDC_VERSION__ , więc nowe języki cpplib CLK_GNUC17 i CLK_STDC17 są dodawane do obsługi przy użyciu tej nowej wartości z nowymi opcjami. (Jeśli średnia kończy się opublikowana w 2018 roku i jest znany jako C18 opcja aliasy mogą być dodawane. Należy jednak pamiętać, że -std=iso9899:199409 odpowiada __STDC_VERSION__ wartości aniżeli data publikacji).

(Istnieje kilka dr uchwał wymagających realizacji w GCC, ale , który jest niezależny od nowych opcji.)

Tak, nie ma żadnych nowych funkcji obejmie w C17.

Cppreference (History of C) mówi: rozwój

Future

C17 Następny moll języka C średnia korekta będzie obejmować wszystkie zaakceptowane raporty defektów C11 ale żadnych nowych funkcji.

+2

Następnie jest publikowany przez ISO, ale jest to tylko poprawiona wersja. Dzięki ! – informaticienzero

+3

Dla uzupełnienia tego, proponowana jest jedna skuteczna zmiana: użycie 'ATOMIC_VAR_INIT' nie jest już obowiązkowe dla inicjowania zmiennych atomowych. Wystarczy zwykła inicjalizacja. –

+2

Dla tych, którzy nie są przyzwyczajeni do czytania standardowego bełkotu: DR oznacza Raport o defekcie. – Lundin