GCC

Screenshot der Software:
GCC
Softwarebeschreibung:
Version: 8.2.0 Aktualisiert
Upload-Datum: 16 Aug 18
Entwickler: The GCC Team
Lizenz: Frei
Popularität: 108

Rating: 3.0/5 (Total Votes: 3)

GCC (GNU Compiler Collection) ist eine Open-Source-Befehlszeilensoftware, die als Compiler für GNU / Linux- und BSD-basierte Betriebssysteme dient. Es enthält Front-Ends für zahlreiche Programmiersprachen, einschließlich Objective-C, Go, C ++, Java, C, Ada und Fortran.


Funktionen auf einen Blick

Mit GCC können Sie GNU / Linux-Anwendungen in Linux- oder BSD-Betriebssystemen nur mit dem Quellarchiv des jeweiligen Programms konfigurieren, kompilieren und installieren. Benutzer müssen jedoch nicht mit dem Compiler interagieren, da dies automatisch von den Skripts configure und make ausgeführt wird.

Das Projekt enthält auch Bibliotheken für verschiedene Programmiersprachen, wie libstdc und libgcj, und wie die meisten GNU-Software muss es konfiguriert werden, bevor es auf Ihrem Computer erstellt und installiert werden kann.

Es kann auch den vollständigen Pfad zu einer bestimmten Bibliothek, Ordner im Suchpfad des Compilers, den vollständigen Pfad zu einer bestimmten Komponente, das Verzeichnis der Zielbibliotheken, das Sysroot-Suffix zum Suchen nach Headern und das normalisierte GNU-Triplet des Ziels anzeigen. p>

Darüber hinaus gibt es verschiedene andere Optionen zum Übergeben bestimmter kommagetrennter Optionen und Argumente an den Assembler, Präprozessor und Linker, Kompilieren und Assemblieren ohne Verknüpfung, Erstellen einer gemeinsamen Bibliothek und viele andere.


Entwickelt für das GNU-Betriebssystem

Ursprünglich als Hauptcompiler für das GNU-Betriebssystem geschrieben, wurde GCC (GNU Compiler Collection) als 100% freie Software entwickelt und wird standardmäßig auf jeder Linux-Distribution installiert.

Die Software wird auch von Open-Source-Entwicklern verwendet, um ihre Programme zu kompilieren. Die Befehlszeile enthält verschiedene Optionen, darunter die Möglichkeit, den Zielprozessor des Compilers sowie den relativen Pfad zu den Betriebssystembibliotheken anzuzeigen.


Endeffekt

Alles in allem ist GCC eine der wichtigsten Komponenten eines jeden GNU / Linux-Betriebssystems. Wir können uns nicht nur eine Welt ohne sie vorstellen, sondern GCC ist der Hauptgrund für das gesamte Open Source-Ökosystem.

Was ist neu in dieser Version:

  • GCC 7.3 ist eine Bug-Fix-Version aus dem GCC 7-Zweig, die wichtige Korrekturen für Regressionen und schwerwiegende Fehler in GCC 7.2 mit mehr als 99 Fehlern enthält, die seit der letzten Veröffentlichung behoben wurden.
  • Diese Version enthält Codegenerierungsoptionen, um Spectre Variant 2 (CVE 2017-5715) für die x86- und powerpc-Ziele zu minimieren.

Was ist neu in Version 8.1.0:

  • GCC 7.3 ist eine Bug-Fix-Version von GCC 7-Zweig enthält wichtige Korrekturen für Regressionen und schwerwiegende Fehler in GCC 7.2 mit mehr als 99 Fehlern, die seit der letzten Veröffentlichung behoben wurden.
  • Diese Version enthält Codegenerierungsoptionen, um Spectre Variant 2 (CVE 2017-5715) für die x86- und powerpc-Ziele zu minimieren.

Was ist neu in der Version:

  • GCC 7.1 ist eine Hauptversion, die wesentliche neue Funktionen enthält, die in GCC 6.x oder früheren GCC-Versionen nicht verfügbar sind. Das C ++ - Frontend verfügt nun über experimentelle Unterstützung für alle aktuellen C ++ 17-Entwürfe mit den Optionen -std = c ++ 1z und -std = gnu ++ 1z und die libstdc ++ - Bibliothek enthält die meisten C ++ 17-Entwürfe Bibliotheksfunktionen implementiert. Dadurch werden verschiedene Verbesserungen in den ausgegebenen Diagnosen, einschließlich verbesserter Standorte, Ortsbereiche, Vorschläge für falsch geschriebene Identifikatoren, Optionsnamen, Fix-it-Hinweise und verschiedene neue Warnungen, hinzugefügt. Die Optimierer wurden verbessert, wobei Verbesserungen in allen intra- und interprozeduralen Optimierungen, Optimierungen der Verknüpfungszeit und verschiedenen Ziel-Backends auftraten, einschließlich, aber nicht beschränkt auf Additionen des Filialzusammenführungsdurchlaufs, der Code-Hub-Optimierung, des Schleifenaufteilens und -schrumpfens Verpackungsverbesserungen. Der Address Sanitizer kann jetzt Verwendungen von Variablen melden, nachdem sie ihren Bereich verlassen haben. GCC kann jetzt für das OpenMP 4.5-Offloading auf NVidia PTX-GPGPUs konfiguriert werden.

Was ist neu in Version 6.3.0:

  • GCC 6.3 ist eine Bug-Fix-Version aus dem GCC 6-Zweig, die wichtige Korrekturen für Regressionen und schwerwiegende Fehler in GCC 6.2 mit mehr als 79 Fehlern enthält, die seit der letzten Veröffentlichung behoben wurden.

Was ist neu in Version 6.2.0:

  • Diese Version ist eine Bug-Fix-Version, die Korrekturen für Regressionen in GCC 5.2 im Vergleich zu früheren Versionen von GCC enthält.

Was ist neu in Version 6.1.0:

  • Diese Version ist eine Bug-Fix-Version, die Korrekturen für Regressionen in GCC 5.2 im Vergleich zu früheren Versionen von GCC enthält.

Was ist neu in Version 5.3.0:

  • Diese Version ist eine Bug-Fix-Version, die Korrekturen für Regressionen in GCC 5.2 im Vergleich zu früheren Versionen von GCC enthält.

Was ist neu in Version 5.2.0:

  • Diese Version ist eine Bug-Fix-Version, die Korrekturen für Regressionen in GCC 5.1 im Vergleich zu früheren Versionen von GCC enthält.

Was ist neu in Version 5.1.0:

  • Das C ++ - Frontend verfügt jetzt über vollständige C ++ 14-Sprachenunterstützung und die C ++ - Standardbibliothek verfügt über vollständige C ++ 11-Unterstützung und experimentelle vollständige C ++ 14-Unterstützung. Die vollständige C ++ 11-Unterstützung wurde durch die Einführung von Dual ABI ermöglicht, siehe https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html für weitere Details.
  • Das C-Frontend ist jetzt standardmäßig im C11-Modus mit GNU-Erweiterungen, was sich auf die Semantik des Inline-Schlüsselworts auswirkt und einige andere sichtbare Änderungen des Benutzers mit sich bringt, siehe https://gcc.gnu.org/gcc-5/porting_to.html für mehr Details.
  • GCC 5.1 enthält verschiedene interprozedurale Optimierungsverbesserungen, z. ein neuer IPA Identical Code Folding Pass und verschiedene LTO-Verbesserungen, z.B. ODR-basierte Zusammenführung von C ++ - Typen, siehe http://hubicka.blogspot.cz/2015/04/GCC5-IPA-LTO-news.html für weitere Details.
  • Der GCC 5.1 Local Register Allocator enthält jetzt einen Rematerialisierungs-Subpass, auf dem i86 / x86-64 das PIC-Hardregister wiederverwenden kann, um die Leistung von positionsunabhängigem Code zu verbessern, es gibt einen einfachen interprozeduralen RA-Pass und verschiedene andere Register Zuordnungsverbesserungen wurden hinzugefügt.
  • GCC 5.1 bietet teilweise Unterstützung für den OpenACC-Standard, Unterstützung für das OpenMP 4.0-Offloading zu Intels kommenden Xeon Phi-Beschleunigern und Unterstützung für das OpenACC-Offloading auf PTX. Das Undefined Behavior Sanitizer in GCC wurde um verschiedene neue Laufzeitprüfungen erweitert. Eine experimentelle GCC JIT Bibliothek wurde in GCC 5.1 hinzugefügt.

Was ist neu in Version 4.8.4:

  • Verbesserungen des allgemeinen Optimierers:
  • AddressSanitizer, ein schneller Speicherfehlerdetektor, ist jetzt auf ARM verfügbar.
  • UndefinedBehaviorSanitizer (ubsan), ein schneller undefinierter Verhaltensdetektor, wurde hinzugefügt und kann über -fsanitize = undefined aktiviert werden. Verschiedene Berechnungen werden instrumentiert, um undefiniertes Verhalten zur Laufzeit zu erkennen. UndefinedBehaviorSanitizer ist derzeit für die Sprachen C und C ++ verfügbar.
  • Verbesserungen der Link-Zeit-Optimierung (LTO):
  • Die Typverschmelzung wurde neu geschrieben. Die neue Implementierung ist wesentlich schneller und benötigt weniger Speicher.
  • Besserer Partitionierungsalgorithmus, der zu weniger Streaming während der Verbindungszeit führt.
  • Durch das frühzeitige Entfernen virtueller Methoden wird die Größe von Objektdateien reduziert und die Verwendung von Link-Time-Speichern und die Kompilierzeit verbessert.
  • Funktionskörper werden jetzt bei Bedarf geladen und früh freigegeben, wodurch die Gesamtspeicherauslastung während der Verbindungszeit verbessert wird.
  • Verdeckte C ++ - Methoden können nun optimiert werden.
  • Bei der Verwendung eines Linker-Plugins werden beim Kompilieren mit der Option -flto schlanke Objektdateien (.o) generiert, die nur eine intermediäre Sprachrepräsentation für LTO enthalten. Verwenden Sie -ffat-lto-objects, um Dateien zu erstellen, die zusätzlich den Objektcode enthalten. Um statische Bibliotheken zu generieren, die für die LTO-Verarbeitung geeignet sind, verwenden Sie gcc-ar und gcc-ralib; Um Symbole aus einer schlanken Objektdatei aufzulisten, verwenden Sie gcc-nm. (Dies erfordert, dass ar, ranlib und nm mit Plugin-Unterstützung kompiliert wurden.)
  • Der Arbeitsspeicherverbrauch von Firefox mit aktiviertem Debugging wurde von 15 GB auf 3,5 GB reduziert; Verbindungszeit von 1700 Sekunden bis 350 Sekunden.
  • Interprozessuale Optimierungsverbesserungen:
  • Neues Typ-Vererbungsanalysemodul zur Verbesserung der Devirtualisierung. Die Devirtualisierung berücksichtigt nun anonyme Namensräume und das Schlüsselwort C ++ 11 final.
  • Neuer spekulativer Devirtualisierungspass (gesteuert durch -fdevirtualize-spekulativ.
  • Anrufe, die spekulativ direkt gemacht wurden, werden auf indirekt zurückgestellt, wenn direkter Anruf nicht billiger ist.
  • Lokale Aliase werden für Symbole eingeführt, von denen bekannt ist, dass sie in freigegebenen Bibliotheken semantisch äquivalent sind, wodurch dynamische Verknüpfungszeiten verbessert werden.
  • Feedback gerichtete Optimierungsverbesserungen:
  • Das Profiling von Programmen mit C ++ Inline-Funktionen ist jetzt zuverlässiger.
  • Die neue Zeitprofilerstellung bestimmt die typische Reihenfolge, in der Funktionen ausgeführt werden.
  • Ein neuer Funktionsreorder-Durchlauf (gesteuert durch -freorder-Funktionen) reduziert die Startzeit großer Anwendungen erheblich. Bis die binutils-Unterstützung abgeschlossen ist, ist sie nur mit der Optimierung der Verbindungszeit wirksam.
  • Rückkopplungsbasierte indirekte Anrufentfernung und Devirtualisierung behandeln jetzt modulübergreifende Anrufe, wenn die Linkzeitoptimierung aktiviert ist.
  • Neue sprach- und sprachspezifische Verbesserungen:
  • Version 4.0 der OpenMP-Spezifikation wird jetzt in den C- und C ++ - Compilern unterstützt und beginnt mit der Version 4.9.1 auch im Fortran-Compiler. Die neue Option -fopenmp-simd kann verwendet werden, um die SIMD-Direktiven von OpenMP zu aktivieren, während andere OpenMP-Direktiven ignoriert werden. Die neue Option -fsimd-cost-model = erlaubt es, das Vektorisierungskostenmodell für Schleifen anzupassen, die mit OpenMP- und Cilk Plus-simd-Anweisungen versehen sind. -Wopenmp-simd warnt, wenn das aktuelle Kostenmodell die vom Benutzer eingestellten simd-Direktiven überschreibt.
  • Die Option -Wedate-time wurde für die C-, C ++ - und Fortran-Compiler hinzugefügt, die warnen, wenn die Makros __DATE__, __TIME__ oder __TIMESTAMP__ verwendet werden. Diese Makros könnten bitweise identische reproduzierbare Zusammenstellungen verhindern.
  • Ada:
  • GNAT ist standardmäßig auf Ada 2012 anstatt auf Ada 2005 umgestellt worden.
  • C Familie:
  • Unterstützung für die Kolorierung von Diagnosen, die von GCC ausgegeben wurden, wurde hinzugefügt. Die -fdiagnostics-color = auto aktiviert es bei der Ausgabe an Terminals, -fdiagnostics-color = immer bedingungslos. Die Umgebungsvariable GCC_COLORS kann zum Anpassen der Farben oder zum Deaktivieren der Farbgebung verwendet werden. Wenn die Variable GCC_COLORS in der Umgebung vorhanden ist, lautet der Standardwert -fdiagnostics-color = auto, andernfalls -fdiagnostics-color = nie.
  • Beispiel für eine Diagnoseausgabe:
  • $ g ++ -fdiagnostics-color = immer -S -Wall test.C
  • test.C: In der Funktion & lt; int foo () ':
  • test.C: 1: 14: warning: keine return-Anweisung in der Funktion, die nicht-void zurückgibt [-Wreturn-type]
  • int foo () {}
  • test.C: 2: 46: error: Template Instanziierungstiefe überschreitet das Maximum von 900 (benutze -template-depth = um das Maximum zu erhöhen) instantiating & lsquo; struct X '
  • Template-Struktur X {statisch const int value = X :: value; }; Vorlagenstruktur X;
  • test.C: 2: 46: rekursiv erforderlich von & lsquo; const int X :: value '
  • test.C: 2: 46: erforderlich von & lsquo; const int X :: value '
  • test.C: 2: 88: von hier aus erforderlich
  • test.C: 2: 46: Fehler: unvollständiger Typ & lsquo; X 'wird in verschachtelten Namensspezifizierer verwendet
  • Mit dem neuen #pragma GCC ivdep kann der Benutzer feststellen, dass es keine Loop-getragenen Abhängigkeiten gibt, die die gleichzeitige Ausführung aufeinanderfolgender Iterationen mit SIMD-Befehlen (Single Instruction Multiple Data) verhindern würden.
  • Unterstützung für Cilk Plus wurde hinzugefügt und kann mit der Option -fcilkplus aktiviert werden. Cilk Plus ist eine Erweiterung der C- und C ++ - Sprachen zur Unterstützung der Daten- und Aufgabenparallelität. Die vorliegende Implementierung folgt ABI Version 1.2; Alle Funktionen außer _Cilk_for wurden implementiert.
  • ISO-C11-Atomics (der _Atomic-Specifier und Qualifier und der Header) werden jetzt unterstützt.
  • ISO C11 generische Auswahlen (_Generic Schlüsselwort) werden jetzt unterstützt.
  • ISO C11 Thread-lokaler Speicher (_Thread_local, ähnlich wie GNU C __thread) wird jetzt unterstützt.
  • Die ISO C11-Unterstützung ist jetzt auf einem ähnlichen Grad der Vollständigkeit wie die ISO C99-Unterstützung: im Wesentlichen vollständige Modulo-Fehler, erweiterte Kennungen (unterstützt bis auf Eckfälle bei Verwendung von -bevorzugten Kennungen), Gleitkomma-Probleme (hauptsächlich, aber nicht vollständig) im Zusammenhang mit optionalen C99-Merkmalen aus den Anhängen F und G) und den optionalen Anhängen K (Grenzüberschreitende Schnittstellen) und L (Analysierbarkeit).
  • Eine neue C-Erweiterung __auto_type bietet eine Teilmenge der Funktionalität von C ++ 11 auto in GNU C.
  • C ++:
  • Die G ++ - Implementierung von C ++ 1y-Rückgabetypabzug für normale Funktionen wurde aktualisiert, um N3638 zu entsprechen, dem Vorschlag, der in das Arbeitspapier übernommen wurde. Vor allem fügt es declltype (auto) hinzu, um die Declltype-Semantik zu erhalten, und nicht die Template-Argumentableitungssemantik von plain auto:
  • Int & amp; f ();
  • auto i1 = f (); // int
  • declltype (automatisch) i2 = f (); // int & amp;
  • G ++ unterstützt C ++ 1y Lambda-Capture-Initialisierer:
  • [x = 42] {...};
  • Tatsächlich wurden sie seit GCC 4.5 akzeptiert, aber jetzt warnt der Compiler sie nicht mit -std = c ++ 1y und unterstützt auch in Klammern gesetzte Initialisierer.
  • G ++ unterstützt C ++ 1y Arrays variabler Länge. G ++ unterstützt seit langem GNU / C99-Stil-VLAs, unterstützt jetzt aber zusätzlich Initialisierungen und Lambda-Capture per Referenz. In C ++ 1y-Modus wird sich G ++ über VLA-Anwendungen beschweren, die vom Standardentwurf nicht zugelassen sind, wie z. B. das Bilden eines Zeigers auf VLA-Typ oder das Anwenden von sizeof auf eine VLA-Variable. Beachten Sie, dass VLAs jetzt nicht Teil von C ++ 14 sein werden, sondern Teil eines separaten Dokuments und dann möglicherweise C ++ 17 sein werden.
  • Leere f (int n) {
  • int a [n] = {1, 2, 3}; // löst std :: bad_array_length aus, wenn n & lt; 3
  • [& amp; a] {für (int i: a) {cout

Was ist neu in Version 4.9.1:

  • GCC 4.9.1 ist eine Bug-Fix-Version aus dem GCC 4.9-Zweig, die wichtige Korrekturen für Regressionen und schwerwiegende Fehler in GCC 4.9.0 enthält, mit mehr als 88 Fehlern, die seit dem letzten Release behoben wurden. Darüber hinaus unterstützt GCC 4.9.1 Release OpenMP 4.0 auch in Fortran und nicht nur in C und C ++.

Was ist neu in Version 4.9.0:

  • Verbesserungen des allgemeinen Optimierers:
  • AddressSanitizer, ein schneller Speicherfehlerdetektor, ist jetzt auf ARM verfügbar.
  • UndefinedBehaviorSanitizer (ubsan), ein schneller undefinierter Verhaltensdetektor, wurde hinzugefügt und kann über -fsanitize = undefined aktiviert werden. Verschiedene Berechnungen werden instrumentiert, um undefiniertes Verhalten zur Laufzeit zu erkennen. UndefinedBehaviorSanitizer ist derzeit für die Sprachen C und C ++ verfügbar.
  • Verbesserungen der Link-Zeit-Optimierung (LTO):
  • Die Typverschmelzung wurde neu geschrieben. Die neue Implementierung ist wesentlich schneller und benötigt weniger Speicher.
  • Besserer Partitionierungsalgorithmus, der zu weniger Streaming während der Verbindungszeit führt.
  • Durch das frühzeitige Entfernen virtueller Methoden wird die Größe von Objektdateien reduziert und die Verwendung von Link-Time-Speichern und die Kompilierzeit verbessert.
  • Funktionskörper werden jetzt bei Bedarf geladen und früh freigegeben, wodurch die Gesamtspeicherauslastung während der Verbindungszeit verbessert wird.
  • Verdeckte C ++ - Methoden können nun optimiert werden.
  • Bei der Verwendung eines Linker-Plugins werden beim Kompilieren mit der Option -flto nun schlanke Objektdateien (.o) generiert, die nur eine intermediäre Sprachrepräsentation für LTO enthalten. Verwenden Sie -ffat-lto-objects, um Dateien zu erstellen, die zusätzlich den Objektcode enthalten. Um statische Bibliotheken zu generieren, die für die LTO-Verarbeitung geeignet sind, verwenden Sie gcc-ar und gcc-ralib; Um Symbole aus einer schlanken Objektdatei aufzulisten, verwenden Sie gcc-nm. (Erfordert, dass ar, ranlib und nm mit Plugin-Unterstützung kompiliert wurden.)
  • Der Arbeitsspeicherverbrauch von Firefox mit aktiviertem Debugging wurde von 15 GB auf 3,5 GB reduziert; Verbindungszeit von 1700 Sekunden bis 350 Sekunden.
  • Interprozessuale Optimierungsverbesserungen:
  • Neues Typ-Vererbungsanalysemodul zur Verbesserung der Devirtualisierung. Die Devirtualisierung berücksichtigt nun anonyme Namensräume und das Schlüsselwort C ++ 11 final.
  • Neuer spekulativer Devirtualisierungspass (gesteuert durch -fdevirtualize-spekulativ.
  • Anrufe, die spekulativ direkt gemacht wurden, werden auf indirekt zurückgestellt, wenn direkter Anruf nicht billiger ist.
  • Lokale Aliase werden für Symbole eingeführt, von denen bekannt ist, dass sie in freigegebenen Bibliotheken semantisch äquivalent sind, wodurch dynamische Verknüpfungszeiten verbessert werden.
  • Feedback gerichtete Optimierungsverbesserungen:
  • Das Profiling von Programmen mit C ++ Inline-Funktionen ist jetzt zuverlässiger.
  • Die neue Zeitprofilerstellung bestimmt die typische Reihenfolge, in der Funktionen ausgeführt werden.
  • Ein neuer Funktionsreorder-Durchlauf (gesteuert durch -freorder-Funktionen) reduziert die Startzeit großer Anwendungen erheblich. Bis die binutils-Unterstützung abgeschlossen ist, ist sie nur mit der Optimierung der Verbindungszeit wirksam.
  • Rückkopplungsbasierte indirekte Anrufentfernung und Devirtualisierung behandeln jetzt modulübergreifende Anrufe, wenn die Linkzeitoptimierung aktiviert ist.
  • Neue sprach- und sprachspezifische Verbesserungen:
  • Version 4.0 der OpenMP-Spezifikation wird jetzt für die C- und C ++ - Compiler unterstützt. Die neue Option -fopenmp-simd kann verwendet werden, um die SIMD-Direktiven von OpenMP zu aktivieren, während andere OpenMP-Direktiven ignoriert werden. Die neue Option -fsimd-cost-model = erlaubt es, das Vektorisierungskostenmodell für Schleifen anzupassen, die mit OpenMP- und Cilk Plus-simd-Anweisungen versehen sind. -Wopenmp-simd warnt, wenn das aktuelle Kostenmodell die vom Benutzer gesetzten simd-Anweisungen überschreibt.
  • Die Option -Wedate-time wurde für die C-, C ++ - und Fortran-Compiler hinzugefügt, die warnen, wenn die Makros __DATE__, __TIME__ oder __TIMESTAMP__ verwendet werden. Diese Makros könnten bitweise identische reproduzierbare Zusammenstellungen verhindern.
  • Ada:
  • GNAT ist standardmäßig auf Ada 2012 anstatt auf Ada 2005 umgestellt worden.
  • C Familie:
  • Unterstützung für die Kolorierung von Diagnosen, die von GCC ausgegeben wurden, wurde hinzugefügt. Die -fdiagnostics-color = auto aktiviert es bei der Ausgabe an Terminals, -fdiagnostics-color = immer bedingungslos. Die Umgebungsvariable GCC_COLORS kann zum Anpassen der Farben oder zum Deaktivieren der Farbgebung verwendet werden. Wenn die Variable GCC_COLORS in der Umgebung vorhanden ist, lautet der Standardwert -fdiagnostics-color = auto, andernfalls -fdiagnostics-color = nie.
  • Beispiel für eine Diagnoseausgabe:
  • $ g ++ -fdiagnostics-color = immer -S -Wall test.C
  • test.C: In der Funktion & lt; int foo () ':
  • test.C: 1: 14: warning: keine return-Anweisung in der Funktion, die nicht-void zurückgibt [-Wreturn-type]
  • int foo () {}
  • test.C: 2: 46: error: Template Instanziierungstiefe überschreitet das Maximum von 900 (benutze -template-depth = um das Maximum zu erhöhen) instantiating & lsquo; struct X '
  • Template-Struktur X {statisch const int value = X :: value; }; Vorlagenstruktur X;
  • test.C: 2: 46: rekursiv erforderlich von & lsquo; const int X :: value '
  • test.C: 2: 46: erforderlich von & lsquo; const int X :: value '
  • test.C: 2: 88: von hier aus erforderlich
  • test.C: 2: 46: Fehler: unvollständiger Typ & lsquo; X 'wird in verschachtelten Namensspezifizierer verwendet
  • Mit dem neuen #pragma GCC ivdep kann der Benutzer feststellen, dass es keine Loop-getragenen Abhängigkeiten gibt, die die gleichzeitige Ausführung aufeinanderfolgender Iterationen mit SIMD-Befehlen (Single Instruction Multiple Data) verhindern würden.
  • Unterstützung für Cilk Plus wurde hinzugefügt und kann mit der Option -fcilkplus aktiviert werden. Cilk Plus ist eine Erweiterung der C- und C ++ - Sprachen zur Unterstützung der Daten- und Aufgabenparallelität. Die vorliegende Implementierung folgt ABI Version 1.2; Alle Funktionen außer _Cilk_for wurden implementiert.
  • ISO-C11-Atomics (der _Atomic-Specifier und Qualifier und der Header) werden jetzt unterstützt.
  • ISO C11 generische Auswahlen (_Generic Schlüsselwort) werden jetzt unterstützt.
  • ISO C11 Thread-lokaler Speicher (_Thread_local, ähnlich wie GNU C __thread) wird jetzt unterstützt.
  • Die ISO C11-Unterstützung ist jetzt auf einem ähnlichen Grad der Vollständigkeit wie die ISO C99-Unterstützung: im Wesentlichen vollständige Modulo-Fehler, erweiterte Kennungen (unterstützt bis auf Eckfälle bei Verwendung von -bevorzugten Kennungen), Gleitkomma-Probleme (hauptsächlich, aber nicht vollständig) im Zusammenhang mit optionalen C99-Merkmalen aus den Anhängen F und G) und den optionalen Anhängen K (Grenzüberschreitende Schnittstellen) und L (Analysierbarkeit).
  • Eine neue C-Erweiterung __auto_type bietet eine Teilmenge der Funktionalität von C ++ 11 auto in GNU C.
  • C ++:
  • Die G ++ - Implementierung von C ++ 1y-Rückgabetypabzug für normale Funktionen wurde aktualisiert, um N3638 zu entsprechen, dem Vorschlag, der in das Arbeitspapier übernommen wurde. Vor allem fügt es declltype (auto) hinzu, um die Declltype-Semantik zu erhalten, und nicht die Template-Argumentableitungssemantik von plain auto:
  • Int & amp; f ();
  • auto i1 = f (); // int
  • declltype (automatisch) i2 = f (); // int & amp;
  • G ++ unterstützt C ++ 1y Lambda-Capture-Initialisierer:
  • [x = 42] {...};
  • Tatsächlich wurden sie seit GCC 4.5 akzeptiert, aber jetzt warnt der Compiler sie nicht mit -std = c ++ 1y und unterstützt auch in Klammern gesetzte Initialisierer.
  • G ++ unterstützt C ++ 1y Arrays variabler Länge. G ++ unterstützt seit langem GNU / C99-Stil-VLAs, unterstützt jetzt aber zusätzlich Initialisierungen und Lambda-Capture per Referenz. In C ++ 1y-Modus wird sich G ++ über VLA-Anwendungen beschweren, die vom Standardentwurf nicht zugelassen sind, wie z. B. das Bilden eines Zeigers auf VLA-Typ oder das Anwenden von sizeof auf eine VLA-Variable. Beachten Sie, dass VLAs jetzt nicht Teil von C ++ 14 sein werden, sondern Teil eines separaten Dokuments und dann möglicherweise C ++ 17 sein werden.
  • Leere f (int n) {
  • int a [n] = {1, 2, 3}; // löst std :: bad_array_length aus, wenn n & lt; 3
  • [& amp; a] {für (int i: a) {cout

Ähnliche Software

Shed Skin
Shed Skin

15 Apr 15

Node.js
Node.js

17 Aug 18

HGL Suite
HGL Suite

17 Feb 15

Xojo
Xojo

20 Feb 15

Kommentare zu GCC

1 Bemerkungen
  • 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
Kommentar hinzufügen
Schalten Sie auf die Bilder!