GCC

Screenshot Software:
GCC
Szczegóły programowe:
Wersja: 8.2.0 Aktualizowane
Filmu: 16 Aug 18
Wywoływacz: The GCC Team
Licencja: Wolny
Popularność: 108

Rating: 3.0/5 (Total Votes: 3)

GCC (GNU Compiler Collection) to oprogramowanie wiersza polecenia typu open source zaprojektowane jako kompilator dla systemów operacyjnych opartych na GNU / Linux i BSD. Zawiera front-endy dla wielu języków programowania, w tym Objective-C, Go, C ++, Java, C, Ada i Fortran.


Funkcje na pierwszy rzut oka

Dzięki GCC możesz konfigurować, kompilować i instalować aplikacje GNU / Linux w systemach operacyjnych Linux lub BSD, używając tylko archiwum źródłowego odpowiedniego programu. Jednak użytkownicy nie muszą wchodzić w interakcję z kompilatorem, ponieważ odbywa się to automatycznie za pomocą skryptów configure i make.

Projekt obejmuje również biblioteki dla różnych języków programowania, takich jak libstdc i libgcj, i podobnie jak większość programów GNU, musi być skonfigurowany, zanim będzie można go zbudować i zainstalować na komputerze.

Może również wyświetlać pełną ścieżkę do określonej biblioteki, foldery w ścieżce wyszukiwania kompilatora, pełną ścieżkę do określonego komponentu, docelowy katalog bibliotek, sufiks sysroot używany do znajdowania nagłówków oraz znormalizowany tryplet GNU.

Ponadto istnieje wiele innych opcji przekazywania pewnych opcji i argumentów oddzielonych przecinkami do asemblera, preprocesora i łącznika, kompilowania i składania bez łączenia, tworzenia współużytkowanej biblioteki i wielu innych.


Zaprojektowany dla systemu operacyjnego GNU

Pierwotnie napisany jako główny kompilator systemu operacyjnego GNU, GCC (GNU Compiler Collection) został opracowany jako oprogramowanie w 100% wolne i jest instalowany domyślnie w każdej dystrybucji Linuksa.

Oprogramowanie jest również używane przez programistów Open Source do kompilowania ich programów. Wiersz poleceń ma kilka opcji, wśród których możemy wymienić opcję wyświetlania docelowego procesora kompilatora, a także względną ścieżkę do bibliotek OS.


Dolna linia

Podsumowując, GCC jest jednym z najważniejszych komponentów każdego systemu operacyjnego GNU / Linux. Nie tylko możemy sobie wyobrazić świat bez niego, ale GCC jest główną przyczyną całego ekosystemu Open Source.

Co nowego w tym wydaniu:

  • GCC 7.3 jest wydaniem poprawkowym z gałęzi GCC 7, zawierającym ważne poprawki regresji i poważnych błędów w GCC 7.2 z ponad 99 naprawionymi błędami od poprzedniej wersji.
  • Ta wersja zawiera opcje generowania kodu w celu złagodzenia Spectre Variant 2 (CVE 2017-5715) dla celów x86 i powerpc.

Co nowego w wersji 8.1.0:

  • GCC 7.3 jest wydaniem poprawki błędu od Oddział GCC 7 zawierający ważne poprawki do regresji i poważnych błędów w GCC 7.2 z ponad 99 poprawionymi błędami od poprzedniej wersji.
  • Ta wersja zawiera opcje generowania kodu w celu złagodzenia Spectre Variant 2 (CVE 2017-5715) dla celów x86 i powerpc.

Co nowego w wersji:

  • GCC 7.1 jest główną wersją zawierającą nowe istotne funkcje niedostępne w GCC 6.x lub wcześniejszych wersjach GCC. Interfejs C ++ ma teraz eksperymentalne wsparcie dla całego obecnego szkicu C ++ 17, z opcjami -std = c ++ 1z i -std = gnu ++ 1z, a biblioteka libstdc ++ ma większość szkicu C ++ 17 zaimplementowano również funkcje biblioteki. W wersjach tych wprowadzono różne ulepszenia w emitowanych narzędziach diagnostycznych, w tym ulepszone lokalizacje, zakresy lokalizacji, sugestie dotyczące błędnie napisanych identyfikatorów, nazwy opcji, poprawki i podpowiedzi oraz różne nowe ostrzeżenia. Optymalizatory zostały ulepszone, z usprawnieniami pojawiającymi się we wszystkich optymalizacjach wewnętrznych i między proceduralnych, optymalizacjach czasu łącza i różnych docelowych obiektach docelowych, w tym, ale nie wyłącznie, dodawaniem przechwytywania magazynu, optymalizacji podnoszenia kodu, dzielenia pętli i zmniejszania ulepszenia owijania. Odświeżacz adresów może teraz raportować użycie zmiennych po opuszczeniu ich zakresu. GCC może teraz zostać skonfigurowany do odczytywania OpenMP 4.5 na GPGPU NVidia PTX.

Co nowego w wersji 6.3.0:

  • GCC 6.3 jest wydaniem poprawkowym z gałęzi GCC 6, zawierającym ważne poprawki do regresji i poważnych błędów w GCC 6.2 z ponad 79 naprawionymi błędami od poprzedniej wersji.

Co nowego w wersji 6.2.0:

  • To wydanie jest wydaniem naprawiającym błędy, zawierającym poprawki do regresji w GCC 5.2 w stosunku do poprzednich wersji GCC.

Co nowego w wersji 6.1.0:

  • To wydanie jest wydaniem naprawiającym błędy, zawierającym poprawki do regresji w GCC 5.2 w stosunku do poprzednich wersji GCC.

Co nowego w wersji 5.3.0:

  • To wydanie jest wydaniem naprawiającym błędy, zawierającym poprawki do regresji w GCC 5.2 w stosunku do poprzednich wersji GCC.

Co nowego w wersji 5.2.0:

  • To wydanie jest wydaniem naprawiającym błędy, zawierającym poprawki do regresji w GCC 5.1 w stosunku do poprzednich wersji GCC.

Co nowego w wersji 5.1.0:

  • Front-end C ++ ma teraz pełną obsługę języka C ++ 14, a standardowa biblioteka C ++ ma pełną obsługę C ++ 11 i eksperymentalną pełną obsługę C ++ 14. Pełne wsparcie dla C ++ 11 stało się możliwe dzięki przyjęciu Dual ABI, zobacz https://gc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html po więcej szczegółów.
  • Front-end C domyślnie jest teraz trybem C11 z rozszerzeniami GNU, co wpływa na semantykę słowa kluczowego inline i przynosi kilka innych widocznych zmian dla użytkownika, zobacz https://gc.gnu.org/gcc-5/porting_to.html więcej szczegółów.
  • GCC 5.1 zawiera różne usprawnienia w zakresie optymalizacji wzajemnej, np. nowy Kod Identyczny Identyfikacji IPA i różne poprawki LTO, np. Łączenie typów C ++ za pomocą ODR, zobacz http://hubicka.blogspot.cz/2015/04/GCC5-IPA-LTO-news.html, aby uzyskać więcej informacji.
  • Lokalny Alokator rejestru GCC 5.1 zawiera teraz subpass do rematerializacji, na I 86 / x86-64 jest w stanie ponownie użyć twardego rejestru PIC, aby poprawić wydajność niezależnego od pozycji kodu, istnieje proste interprocesowe potwierdzenie RA i różne inne rejestry Dodano ulepszenia alokacji.
  • GCC 5.1 dodaje częściową obsługę standardu OpenACC, obsługę OpenMP 4.0, odciążając nadchodzące akceleratory Intel Xeon Phi i obsługę odciążania OpenACC do PTX. Niezdefiniowany system dezynfekcji zachowań w GCC został rozszerzony poprzez dodanie różnych nowych sprawdzeń w czasie wykonywania. Eksperymentalna biblioteka GIT JIT została dodana w GCC 5.1.

Co nowego w wersji 4.8.4:

  • Ogólne ulepszenia optymalizatora:
  • AddressSanitizer, szybki detektor błędów pamięci, jest teraz dostępny na ARM.
  • UndefinedBehaviorSanitizer (ubsan), szybki niezdefiniowany detektor zachowania, został dodany i można go włączyć poprzez -fsanitize = undefined. Różne obliczenia będą wyposażone w narzędzia do wykrywania niezdefiniowanych zachowań w czasie wykonywania. UndefinedBehaviorSanitizer jest obecnie dostępny dla języków C i C ++.
  • Ulepszenia w zakresie optymalizacji linków (LTO):
  • Połączenie typu zostało przepisane. Nowa implementacja jest znacznie szybsza i zużywa mniej pamięci.
  • Lepszy algorytm partycjonowania skutkuje mniejszą transmisją strumieniową w czasie łącza.
  • Wczesne usuwanie metod wirtualnych zmniejsza rozmiar plików obiektowych i poprawia wykorzystanie pamięci łącza oraz czasu kompilacji.
  • Ciała funkcji są teraz ładowane na żądanie i wydawane na wczesnym etapie, poprawiając ogólne wykorzystanie pamięci w czasie połączenia.
  • Ukryte metody C ++ można teraz zoptymalizować.
  • Gdy używa się wtyczki linkera, kompilacja opcją -flto generuje teraz cienkie pliki obiektów (.o), które zawierają jedynie pośrednią reprezentację języka dla LTO. Użyj -ffat-lto-objects, aby utworzyć pliki zawierające dodatkowo kod obiektowy. Aby wygenerować biblioteki statyczne odpowiednie do przetwarzania LTO, użyj gcc-ar i gcc-ranlib; aby wyświetlić symbole z pliku slim object użyj gcc-nm. (Wymaga to skompilowania ar, ranlib i nm z obsługą wtyczek.)
  • Wykorzystanie pamięci budynku Firefox z włączonym debugowaniem został zmniejszony z 15 GB do 3,5 GB; czas połączenia od 1700 sekund do 350 sekund.
  • Udoskonalenia optymalizacji między procesowej:
  • Nowy moduł analizy dziedziczenia usprawniający devirtualization. Devirtualization teraz bierze pod uwagę anonimowe przestrzenie nazw i końcowe słowo kluczowe C ++ 11.
  • Nowe spekulacyjne przejście devirtualization (kontrolowane przez -fdevirtualize-spekulacyjnie.
  • Połączenia, które zostały spekulatywnie wykonane bezpośrednio, są przekierowywane do pośrednich, gdy bezpośrednie połączenia nie są tańsze.
  • Lokalne aliasy wprowadzono dla symboli, które są semantycznie równoważne w bibliotekach współdzielonych, co poprawia czasy łączenia dynamicznego.
  • Poprawki dotyczące optymalizacji ukierunkowanej na opinie:
  • Profilowanie programów korzystających z funkcji inline C ++ jest teraz bardziej niezawodne.
  • Nowe profilowanie czasu określa typową kolejność wykonywania funkcji.
  • Nowa funkcja zmiany kolejności funkcji (kontrolowana przez funkcje -freorder) znacznie skraca czas uruchamiania dużych aplikacji. Dopóki obsługa binutils nie zostanie zakończona, działa tylko z optymalizacją czasu łącza.
  • Bezpośrednie usuwanie połączeń i devirtualization sterowane sprzężeniem zwrotnym obsługują teraz połączenia między modułami, gdy włączona jest optymalizacja czasu łącza.
  • Nowe języki i ulepszenia specyficzne dla języka:
  • Wersja 4.0 specyfikacji OpenMP jest teraz obsługiwana w kompilatorach C i C ++, a od wydania 4.9.1 również w kompilatorze Fortran. Opcji new -fopenmp-simd można użyć do włączenia dyrektyw SIMD OpenMP, ignorując jednocześnie inne dyrektywy OpenMP. Nowa opcja -fsimd-cost-model = umożliwia dostrojenie modelu kosztu wektoryzacji dla pętli z komentarzami do dyrektyw OpenMP i Cilk Plus simd; -Wopenmp-simd ostrzega, gdy bieżący model kosztu zastępuje simd dyrektywy ustawione przez użytkownika.
  • Opcja -Data bieżącego została dodana dla kompilatorów C, C ++ i Fortran, która ostrzega, gdy używane są makra __DATE__, __TIME__ lub __TIMESTAMP__. Te makra mogą zapobiegać powtarzalnym, identycznym bitom kompilacji.
  • Ada:
  • GNAT domyślnie przełączono na Ada 2012 zamiast Ada 2005.
  • Rodzina C:
  • Dodano obsługę diagnostyki kolorowania emitowanej przez GCC. Opcja -fdiagnostics-color = auto włącza ją podczas wysyłania do terminali, -fdiagnostics-color = zawsze bezwarunkowo. Zmienną środowiskową GCC_COLORS można użyć do dostosowania kolorów lub wyłączenia kolorowania. Jeśli zmienna GCC_COLORS jest obecna w środowisku, domyślną wartością jest -fdiagnostics-color = auto, w przeciwnym razie -fdiagnostics-color = never.
  • Przykładowe wyniki diagnostyki:
  • $ g ++ -fdiagnostics-color = always -S -Wall test.C
  • test.C: W funkcji & lt; foo () ':
  • test.C: 1: 14: ostrzeżenie: brak instrukcji return w funkcji zwracającej non-void [-Wreturn-type]
  • int foo () {}
  • test.C: 2: 46: błąd: głębokość instancji szablonu przekracza maksimum 900 (użyj opcji -ftemplate-depth =, aby zwiększyć maksimum), która tworzy instancję & xss; struct X '
  • szablon struct X {static const int value = X :: value; }; szablon struct X;
  • test.C: 2: 46: rekurencyjnie wymagany od & quot; const int X :: value '
  • test.C: 2: 46: wymagany od & lt; const int X :: value '
  • test.C: 2: 88: wymagany tutaj
  • test.C: 2: 46: błąd: niekompletny typ & lsquo; X "używany w specyfikatorze nazw zagnieżdżonych
  • Dzięki nowemu #pragma GCC ivdep użytkownik może stwierdzić, że nie istnieją żadne zależne od pętli zależności, które uniemożliwiałyby równoległe wykonywanie kolejnych iteracji za pomocą instrukcji SIMD (pojedyncza instrukcja wielu danych).
  • Dodano obsługę Cilk Plus i można ją włączyć za pomocą opcji -fcilkplus. Cilk Plus jest rozszerzeniem języków C i C ++ w celu obsługi równoległości danych i zadań. Obecna implementacja jest zgodna z wersją ABI 1.2; wszystkie funkcje oprócz _Cilk_for zostały zaimplementowane.
  • Atom ISO C11 (specyfikator i kwalifikator typu _Atomic oraz nagłówek) są teraz obsługiwane.
  • Ogólne selekcje ISO C11 (_Generic keyword) są teraz obsługiwane.
  • Magazyn lokalny wątku ISO C11 (_Thread_local, podobny do GNU C __thread) jest teraz obsługiwany.
  • Obsługa ISO C11 jest teraz na podobnym poziomie kompletności co obsługa ISO C99: zasadniczo kompletne błędy modulo, rozszerzone identyfikatory (obsługiwane z wyjątkiem przypadków narożnych, gdy używane są identyfikatory rozszerzone), problemy zmiennoprzecinkowe (głównie ale nie do końca dotyczące opcjonalnych funkcji C99 z załączników F i G) i opcjonalnych załączników K (interfejsy sprawdzania granic) i L (możliwość analizy).
  • Nowe rozszerzenie C __auto_type zapewnia podzbiór funkcjonalności C ++ 11 auto w GNU C.
  • C ++:
  • Implementacja odciĘ ... gania zwrotnego w C ++ 1y dla normalnych funkcji została zaktualizowana zgodnie z N3638, propozycja została zaakceptowana w dokumencie roboczym. Przede wszystkim dodaje decltype (auto), aby uzyskać semantykę typu decltype, a nie semantykę dedukcji argumentów w prostym trybie auto:
  • int i amp; f ();
  • auto i1 = f (); // int
  • decltype (auto) i2 = f (); // int & amp;
  • G ++ obsługuje inicjatory przechwytywania lambda C ++ 1y:
  • [x = 42] {...};
  • Właściwie zostały one zaakceptowane od czasu GCC 4.5, ale teraz kompilator nie ostrzega o nich za pomocą -std = c ++ 1y, i obsługuje także nawiasyzowane i zamykane inicjatory.
  • G ++ obsługuje tablice o zmiennej długości C ++ 1y. G ++ od dawna obsługuje warianty VLA na poziomie GNU / C99, ale teraz dodatkowo obsługuje inicjalizatory i przechwytywanie lambda przez odniesienie. W trybie C ++ 1y G ++ będzie narzekać na zastosowania VLA, które nie są dozwolone przez projekt standardu, takie jak tworzenie wskaźnika do typu VLA lub stosowanie sizeof do zmiennej VLA. Zauważ, że teraz wydaje się, że VLA nie będzie częścią C ++ 14, ale będzie częścią oddzielnego dokumentu, a następnie prawdopodobnie C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // wyrzuca std :: bad_array_length jeśli n & lt; 3
  • [& amp; a] {for (int i: a) {cout

Co nowego w wersji 4.9.1:

  • GCC 4.9.1 jest wydaniem poprawkowym z gałęzi GCC 4.9, zawierającym ważne poprawki do regresji i poważnych błędów w GCC 4.9.0 z ponad 88 poprawionymi błędami od poprzedniej wersji. Ponadto wydanie GCC 4.9.1 obsługuje OpenMP 4.0 również w Fortranie, a nie tylko w C i C ++.

Co nowego w wersji 4.9.0:

  • Ogólne ulepszenia optymalizatora:
  • AddressSanitizer, szybki detektor błędów pamięci, jest teraz dostępny na ARM.
  • UndefinedBehaviorSanitizer (ubsan), szybki niezdefiniowany detektor zachowania, został dodany i można go włączyć poprzez -fsanitize = undefined. Różne obliczenia będą wyposażone w narzędzia do wykrywania niezdefiniowanych zachowań w czasie wykonywania. UndefinedBehaviorSanitizer jest obecnie dostępny dla języków C i C ++.
  • Ulepszenia w zakresie optymalizacji linków (LTO):
  • Połączenie typu zostało przepisane. Nowa implementacja jest znacznie szybsza i zużywa mniej pamięci.
  • Lepszy algorytm partycjonowania skutkuje mniejszą transmisją strumieniową w czasie łącza.
  • Wczesne usuwanie metod wirtualnych zmniejsza rozmiar plików obiektowych i poprawia wykorzystanie pamięci łącza oraz czasu kompilacji.
  • Ciała funkcji są teraz ładowane na żądanie i wydawane na wczesnym etapie, poprawiając ogólne wykorzystanie pamięci w czasie połączenia.
  • Ukryte metody C ++ można teraz zoptymalizować.
  • Gdy używa się wtyczki linkera, kompilacja opcją -flto generuje teraz pliki slim objects (.o), które zawierają jedynie pośrednią reprezentację języka dla LTO. Użyj -ffat-lto-objects, aby utworzyć pliki zawierające dodatkowo kod obiektowy. Aby wygenerować biblioteki statyczne odpowiednie do przetwarzania LTO, użyj gcc-ar i gcc-ranlib; aby wyświetlić symbole z pliku slim object użyj gcc-nm. (Wymaga, aby ar, ranlib i nm zostały skompilowane z obsługą wtyczek.)
  • Wykorzystanie pamięci budynku Firefox z włączonym debugowaniem został zmniejszony z 15 GB do 3,5 GB; czas połączenia od 1700 sekund do 350 sekund.
  • Udoskonalenia optymalizacji między procesowej:
  • Nowy moduł analizy dziedziczenia usprawniający devirtualization. Devirtualization teraz bierze pod uwagę anonimowe przestrzenie nazw i końcowe słowo kluczowe C ++ 11.
  • Nowe spekulacyjne przejście devirtualization (kontrolowane przez -fdevirtualize-spekulacyjnie.
  • Połączenia, które zostały spekulatywnie wykonane bezpośrednio, są przekierowywane do pośrednich, gdy bezpośrednie połączenia nie są tańsze.
  • Lokalne aliasy wprowadzono dla symboli, które są semantycznie równoważne w bibliotekach współdzielonych, co poprawia czasy łączenia dynamicznego.
  • Poprawki dotyczące optymalizacji ukierunkowanej na opinie:
  • Profilowanie programów korzystających z funkcji inline C ++ jest teraz bardziej niezawodne.
  • Nowe profilowanie czasu określa typową kolejność wykonywania funkcji.
  • Nowa funkcja zmiany kolejności funkcji (kontrolowana przez funkcje -freorder) znacznie skraca czas uruchamiania dużych aplikacji. Dopóki obsługa binutils nie zostanie zakończona, działa tylko z optymalizacją czasu łącza.
  • Bezpośrednie usuwanie połączeń i devirtualization sterowane sprzężeniem zwrotnym obsługują teraz połączenia między modułami, gdy włączona jest optymalizacja czasu łącza.
  • Nowe języki i ulepszenia specyficzne dla języka:
  • Wersja 4.0 specyfikacji OpenMP jest teraz obsługiwana dla kompilatorów C i C ++. Opcji new -fopenmp-simd można użyć do włączenia dyrektyw SIMD OpenMP, ignorując jednocześnie inne dyrektywy OpenMP. Nowa opcja -fsimd-cost-model = umożliwia dostrojenie modelu kosztu wektoryzacji dla pętli z komentarzami do dyrektyw OpenMP i Cilk Plus simd; -Wopenmp-simd ostrzega, gdy aktualny model kosztów przesłania dyrektywy simd ustawione przez użytkownika.
  • Opcja -Data bieżącego została dodana dla kompilatorów C, C ++ i Fortran, która ostrzega, gdy używane są makra __DATE__, __TIME__ lub __TIMESTAMP__. Te makra mogą zapobiegać powtarzalnym, identycznym bitom kompilacji.
  • Ada:
  • GNAT domyślnie przełączono na Ada 2012 zamiast Ada 2005.
  • Rodzina C:
  • Dodano obsługę diagnostyki kolorowania emitowanej przez GCC. Opcja -fdiagnostics-color = auto włącza ją podczas wysyłania do terminali, -fdiagnostics-color = zawsze bezwarunkowo. Zmienną środowiskową GCC_COLORS można użyć do dostosowania kolorów lub wyłączenia kolorowania. Jeśli zmienna GCC_COLORS jest obecna w środowisku, domyślną wartością jest -fdiagnostics-color = auto, w przeciwnym razie -fdiagnostics-color = never.
  • Przykładowe wyniki diagnostyki:
  • $ g ++ -fdiagnostics-color = always -S -Wall test.C
  • test.C: W funkcji & lt; foo () ':
  • test.C: 1: 14: ostrzeżenie: brak instrukcji return w funkcji zwracającej non-void [-Wreturn-type]
  • int foo () {}
  • test.C: 2: 46: błąd: głębokość instancji szablonu przekracza maksimum 900 (użyj opcji -ftemplate-depth =, aby zwiększyć maksimum), która tworzy instancję & xss; struct X '
  • szablon struct X {static const int value = X :: value; }; szablon struct X;
  • test.C: 2: 46: rekurencyjnie wymagany od & quot; const int X :: value '
  • test.C: 2: 46: wymagany od & lt; const int X :: value '
  • test.C: 2: 88: wymagany tutaj
  • test.C: 2: 46: błąd: niekompletny typ & lsquo; X "używany w specyfikatorze nazw zagnieżdżonych
  • Dzięki nowemu #pragma GCC ivdep użytkownik może stwierdzić, że nie istnieją żadne zależne od pętli zależności, które uniemożliwiałyby równoległe wykonywanie kolejnych iteracji za pomocą instrukcji SIMD (pojedyncza instrukcja wielu danych).
  • Dodano obsługę Cilk Plus i można ją włączyć za pomocą opcji -fcilkplus. Cilk Plus jest rozszerzeniem języków C i C ++ w celu obsługi równoległości danych i zadań. Obecna implementacja jest zgodna z wersją ABI 1.2; wszystkie funkcje oprócz _Cilk_for zostały zaimplementowane.
  • Atom ISO C11 (specyfikator i kwalifikator typu _Atomic oraz nagłówek) są teraz obsługiwane.
  • Ogólne selekcje ISO C11 (_Generic keyword) są teraz obsługiwane.
  • Magazyn lokalny wątku ISO C11 (_Thread_local, podobny do GNU C __thread) jest teraz obsługiwany.
  • Obsługa ISO C11 jest teraz na podobnym poziomie kompletności co obsługa ISO C99: zasadniczo kompletne błędy modulo, rozszerzone identyfikatory (obsługiwane z wyjątkiem przypadków narożnych, gdy używane są identyfikatory rozszerzone), problemy zmiennoprzecinkowe (głównie ale nie do końca dotyczące opcjonalnych funkcji C99 z załączników F i G) i opcjonalnych załączników K (interfejsy sprawdzania granic) i L (możliwość analizy).
  • Nowe rozszerzenie C __auto_type zapewnia podzbiór funkcjonalności C ++ 11 auto w GNU C.
  • C ++:
  • Implementacja odciĘ ... gania zwrotnego w C ++ 1y dla normalnych funkcji została zaktualizowana zgodnie z N3638, propozycja została zaakceptowana w dokumencie roboczym. Przede wszystkim dodaje decltype (auto), aby uzyskać semantykę typu decltype, a nie semantykę dedukcji argumentów w prostym trybie auto:
  • int i amp; f ();
  • auto i1 = f (); // int
  • decltype (auto) i2 = f (); // int & amp;
  • G ++ obsługuje inicjatory przechwytywania lambda C ++ 1y:
  • [x = 42] {...};
  • Właściwie zostały one zaakceptowane od czasu GCC 4.5, ale teraz kompilator nie ostrzega o nich za pomocą -std = c ++ 1y, i obsługuje także nawiasyzowane i zamykane inicjatory.
  • G ++ obsługuje macierze o zmiennej długości C ++ 1y. G ++ od dawna obsługuje warianty VLA na poziomie GNU / C99, ale teraz dodatkowo obsługuje inicjalizatory i przechwytywanie lambda przez odniesienie. W trybie C ++ 1y G ++ będzie narzekać na zastosowania VLA, które nie są dozwolone przez projekt standardu, takie jak tworzenie wskaźnika do typu VLA lub stosowanie sizeof do zmiennej VLA. Zauważ, że teraz wydaje się, że VLA nie będzie częścią C ++ 14, ale będzie częścią oddzielnego dokumentu, a następnie prawdopodobnie C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // wyrzuca std :: bad_array_length jeśli n & lt; 3
  • [& amp; a] {for (int i: a) {cout

Podobne oprogramowanie

Alice ML
Alice ML

2 Jun 15

Magic C++
Magic C++

3 Jun 15

Ruby
Ruby

17 Aug 18

Komentarze do GCC

1 Komentarze
  • http://www.eduwizzonlinetrainings.com 29 Dec 17
    EduwizzOnlineTraining is one of the Best Online Training Institute in Hyderabad, Bangalore. Eduwizz provide courses like Hybris Development, WebSphere Commerce Server,Blockchain Training,Hyperledger Fabric Development ,Ethereum Development ,Commvault Training, Devops , Netapps , Mulesoft ESB ,Machine Learning,Data Science , Internet of Things , Hybris ,Angular JS , Node JS , Express JS , Business Analyst, Selenium testing with webdriver, Guidewire ,Adobe, RPA ,TSM, EMC...etc
Dodaj komentarz
Włącz zdjęć!