GCC

Software screenshot:
GCC
Software informatie:
Versie: 8.2.0 Bijgewerkt
Upload datum: 16 Aug 18
Ontwikkelaar: The GCC Team
Licentie: Gratis
Populariteit: 108

Rating: 3.0/5 (Total Votes: 3)

GCC (GNU Compiler Collection) is een open source opdrachtregelprogramma dat is ontworpen als een compiler voor GNU / Linux en BSD-gebaseerde besturingssystemen. Het bevat front-ends voor verschillende programmeertalen, waaronder Objective-C, Go, C ++, Java, C, Ada en Fortran.


Functies in één oogopslag

Met GCC kunt u GNU / Linux-toepassingen in Linux- of BSD-besturingssystemen configureren, compileren en installeren met alleen het bronarchief van het betreffende programma. Gebruikers hoeven echter geen interactie met de compiler uit te voeren, omdat dit automatisch wordt gedaan door het configureren en maken van scripts.

Het project bevat ook bibliotheken voor verschillende programmeertalen, zoals libstdc en libgcj, en zoals de meeste GNU-software, moet het worden geconfigureerd voordat het op uw computer kan worden gebouwd en geïnstalleerd.

Het kan ook het volledige pad naar een specifieke bibliotheek weergeven, mappen in het zoekpad van de compilator, volledig pad naar een specifiek onderdeel, de map met doelbibliotheken, sysroot-achtervoegsel dat wordt gebruikt om headers te vinden en het genormaliseerde GNU-triplet van het doel.

Daarnaast zijn er verschillende andere opties voor het doorgeven van bepaalde door komma's gescheiden opties en argumenten aan assembler, preprocessor en linker, compileren en samenstellen zonder te linken, een gedeelde bibliotheek maken en vele andere.


Ontworpen voor het GNU-besturingssysteem

Oorspronkelijk geschreven als de hoofdcompiler voor het GNU-besturingssysteem, werd GCC (GNU Compiler Collection) ontwikkeld als 100% gratis software en standaard geïnstalleerd op elke Linux-distributie.

De software wordt ook gebruikt door Open Source-ontwikkelaars om hun programma's te compileren. De opdrachtregel bevat verschillende opties, waaronder de mogelijkheid om de doelprocessor van de compiler weer te geven, evenals het relatieve pad naar OS-bibliotheken.


Bottom line

Al met al is GCC een van de meest essentiële componenten van elk GNU / Linux-besturingssysteem. Niet alleen dat we ons een wereld kunnen voorstellen zonder, maar GCC is de belangrijkste reden achter het gehele ecosysteem van Open Source.

Wat is nieuw in deze versie:

  • GCC 7.3 is een bugfix-release van de GCC 7-branch met belangrijke fixes voor regressies en serieuze bugs in GCC 7.2 met meer dan 99 bugs verholpen sinds de vorige release.
  • Deze release bevat codegeneratieopties om Spectre Variant 2 (CVE 2017-5715) voor de x86- en powerpc-doelen te beperken.

Wat is nieuw in versie 8.1.0:

  • GCC 7.3 is een bug-fix release van de GCC 7-branch met belangrijke fixes voor regressies en serieuze bugs in GCC 7.2 met meer dan 99 bugs verholpen sinds de vorige release.
  • Deze release bevat codegeneratieopties om Spectre Variant 2 (CVE 2017-5715) voor de x86- en powerpc-doelen te beperken.

Wat is nieuw in versie:

  • GCC 7.1 is een belangrijke release met substantiële nieuwe functionaliteit die niet beschikbaar is in GCC 6.x of eerdere GCC-releases. De C ++ frontend heeft nu experimentele ondersteuning voor alle huidige C ++ 17 concepten, met de -std = c ++ 1z en -std = gnu ++ 1z opties, en de libstdc ++ bibliotheek heeft het grootste deel van de C ++ 17 draft bibliotheekfuncties ook geïmplementeerd. Deze releases bevatten verschillende verbeteringen in de uitgezonden diagnostiek, waaronder verbeterde locaties, locatiebereiken, suggesties voor verkeerd gespelde identifiers, optienamen, tips voor fixes en verschillende nieuwe waarschuwingen zijn toegevoegd. De optimizers zijn verbeterd, waarbij verbeteringen zijn opgetreden bij alle intra- en inter-procedurele optimalisaties, optimalisatie van link-tijden en verschillende backends van doelen, inclusief, maar niet beperkt tot, toevoegingen aan de store merging pass, optimalisatie van codehijsingen, loop-splitsing en krimpen wrapping verbeteringen. De adresverwijderaar kan nu gebruik van variabelen melden nadat het bereik is verlaten. GCC kan nu worden geconfigureerd voor OpenMP 4.5-offloading naar NVidia PTX GPGPU's.

Wat is nieuw in versie 6.3.0:

  • GCC 6.3 is een bugfix-release van de GCC 6-branch met belangrijke fixes voor regressies en serieuze bugs in GCC 6.2 met meer dan 79 bugs verholpen sinds de vorige release.

Wat is nieuw in versie 6.2.0:

  • Deze release is een bugfix-release met fixes voor regressies in GCC 5.2 ten opzichte van eerdere releases van GCC.

Wat is nieuw in versie 6.1.0:

  • Deze release is een bugfix-release met fixes voor regressies in GCC 5.2 ten opzichte van eerdere releases van GCC.

Wat is nieuw in versie 5.3.0:

  • Deze release is een bugfix-release met fixes voor regressies in GCC 5.2 ten opzichte van eerdere releases van GCC.

Wat is nieuw in versie 5.2.0:

  • Deze release is een bugfix-release, met fixes voor regressies in GCC 5.1 ten opzichte van eerdere releases van GCC.

Wat is nieuw in versie 5.1.0:

  • De C ++ front-end heeft nu volledige C ++ 14 taalondersteuning en de Standard C ++ Library heeft volledige C ++ 11-ondersteuning en experimentele volledige C ++ 14-ondersteuning. De volledige ondersteuning voor C ++ 11 is mogelijk gemaakt door Dual ABI te gebruiken, zie https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html voor meer informatie.
  • De C-front-end is nu standaard ingesteld op de C11-modus met GNU-uitbreidingen, wat de semantiek van het inline-trefwoord beïnvloedt en verschillende andere zichtbare wijzigingen voor de gebruiker oplevert, zie https://gcc.gnu.org/gcc-5/porting_to.html voor meer informatie.
  • GCC 5.1 bevat verschillende optimalisatieverbeteringen voor optimalisatie, b.v. een nieuwe IPA Identical Code Folding-pas en verschillende LTO-verbeteringen, b.v. Op ODR gebaseerde samenvoeging van C ++ -typen, zie http://hubicka.blogspot.cz/2015/04/GCC5-IPA-LTO-news.html voor meer informatie.
  • De GCC 5.1 Local Register Allocator bevat nu een rematerialisatie-subpass, op i? 86 / x86-64 is in staat om het PIC-hardregister opnieuw te gebruiken om de prestaties van positieonafhankelijke code te verbeteren, er is een eenvoudige interprocedurele RA-pas en verschillende andere registers allocatie verbeteringen zijn toegevoegd.
  • GCC 5.1 voegt gedeeltelijke ondersteuning toe voor de OpenACC-standaard, ondersteuning voor OpenMP 4.0-offloading voor Intel's aankomende Xeon Phi-versnellers en ondersteuning voor OpenACC-offloading naar PTX. De Undefined Behavior Sanitizer in GCC is uitgebreid met verschillende nieuwe runtime-controles. Er is een experimentele GCC JIT-bibliotheek toegevoegd in GCC 5.1.

Wat is nieuw in versie 4.8.4:

  • Algemene optimalizer-verbeteringen:
  • AddressSanitizer, een snelle geheugenfoutdetector, is nu beschikbaar op ARM.
  • UndefinedBehaviorSanitizer (ubsan), een snelle ongedefinieerde gedragsdetector, is toegevoegd en kan worden ingeschakeld via -fsanitize = undefined. Verschillende berekeningen worden geïnstrumenteerd om ongedefinieerd gedrag tijdens runtime te detecteren. UndefinedBehaviorSanitizer is momenteel beschikbaar voor de talen C en C ++.
  • Verbeteringen in de optimalisatie van de koppelingstijd (LTO):
  • Type samenvoegen is herschreven. De nieuwe implementatie is aanzienlijk sneller en gebruikt minder geheugen.
  • Beter partitioneringsalgoritme wat resulteert in minder streaming tijdens verbindingstijd.
  • Vroege verwijdering van virtuele methoden vermindert de grootte van objectbestanden en verbetert het gebruik van geheugen voor link-time geheugen en compileertijd.
  • Functielichamen worden nu on-demand geladen en vrijgegeven om het algehele geheugengebruik op het moment van koppelen te verbeteren.
  • C ++ verborgen sleutelmethoden kunnen nu worden geoptimaliseerd.
  • Wanneer u een linker-plug-in gebruikt, genereert het compileren met de -flto-optie nu slanke objectbestanden (.o) die alleen LTO-afbeeldingen bevatten. Gebruik -ffat-lto-objecten om bestanden te maken die bovendien de objectcode bevatten. Gebruik gcc-ar en gcc-ranlib om statische bibliotheken te genereren die geschikt zijn voor LTO-verwerking; om symbolen uit een slank objectbestand te gebruiken, gebruik je gcc-nm. (Dit vereist dat ar, ranlib en nm zijn gecompileerd met ondersteuning voor plug-ins.)
  • Geheugengebruik bij het bouwen van Firefox met debug ingeschakeld, is verlaagd van 15 GB naar 3,5 GB; koppelingstijd van 1700 seconden tot 350 seconden.
  • Verbeteringen van inter-procedurele optimalisatie:
  • Module voor analyse van nieuwe overervingsanalyses die de devirtualisatie verbetert. Bij Devirtualisatie wordt nu rekening gehouden met anonieme naamruimten en het definitieve C ++ 11-sleutelwoord.
  • Nieuwe pas voor speculatieve devirtualisatie (gecontroleerd door -fdevirtualize-speculatively.
  • Gesprekken die speculatief direct werden gemaakt, worden teruggedraaid naar indirect, waar direct bellen niet goedkoper is.
  • Lokale aliassen worden geïntroduceerd voor symbolen waarvan bekend is dat ze semantisch equivalent zijn in gedeelde bibliotheken waardoor de dynamische koppelingstijden worden verbeterd.
  • Feedbackgerichte optimalisatieverbeteringen:
  • Profilering van programma's met C ++ inline-functies is nu betrouwbaarder.
  • Nieuwe tijdprofilering bepaalt de typische volgorde waarin functies worden uitgevoerd.
  • Een nieuwe functie herordeningspas (bestuurd door -forder-functies) verkort de opstarttijd van grote applicaties aanzienlijk. Tot de ondersteuning van binutils is voltooid, werkt deze alleen met optimalisatie van de link-time.
  • Feedbackgedreven indirecte oproepverwijdering en devirtualisatie verwerken nu cross-module calls wanneer link-time optimalisatie is ingeschakeld.
  • Nieuwe talen en taalspecifieke verbeteringen:
  • Versie 4.0 van de OpenMP-specificatie wordt nu ondersteund in de C- en C ++ -compilers en begint met de 4.9.1-release ook in de Fortran-compiler. De nieuwe -fopenmp-simd optie kan worden gebruikt om OpenMP's SIMD-richtlijnen in te schakelen, terwijl andere OpenMP-richtlijnen worden genegeerd. De nieuwe -fsimd-cost-model = optie maakt het mogelijk om het vectorization cost-model af te stemmen op loops geannoteerd met OpenMP en Cilk Plus simd-richtlijnen; -Wopenmp-simd waarschuwt wanneer het huidige kostenmodel de simd-richtlijnen negeert die door de gebruiker zijn ingesteld.
  • De optie -Wdate-time is toegevoegd voor de compilers C, C ++ en Fortran, die waarschuwt wanneer de macro's __DATE__, __TIME__ of __TIMESTAMP__ worden gebruikt. Die macro's kunnen bit-wise identieke reproduceerbare compilaties voorkomen.
  • Ada:
  • GNAT is standaard overgeschakeld naar Ada 2012 in plaats van Ada 2005.
  • C-familie:
  • Ondersteuning voor kleurendiagnostiek afkomstig van GCC is toegevoegd. De -fdiagnostiek-kleur = automatisch zal het inschakelen bij uitvoer naar terminals, -fdiagnostiek -kleur = altijd onvoorwaardelijk. De GCC_COLORS omgevingsvariabele kan worden gebruikt om de kleuren aan te passen of kleuren uit te schakelen. Als de variabele GCC_COLORS in de omgeving aanwezig is, is de standaard -fdiagnostiek -kleur = auto, anders -fdiagnostiek -kleur = nooit.
  • Voorbeelddiagnostische uitvoer:
  • $ g ++ -fdiagnostics-color = always -S-Wall test.C
  • test.C: in functie & lsquo; int foo () ':
  • test.C: 1: 14: warning: no return statement in functie retourneert niet-ongeldig [-Wreturn-type]
  • int foo () {}
  • test.C: 2: 46: fout: de sjabloonconfiguratiediepte overschrijdt het maximum van 900 (gebruik -ftemplate-depth = om het maximum te verhogen) en structureert & lsquo; struct X '
  • template struct X {static const int value = X :: value; }; sjabloon struct X;
  • test.C: 2: 46: recursief vereist van & lsquo; const int X :: value '
  • test.C: 2: 46: vereist van & lsquo; const int X :: value '
  • test.C: 2: 88: vereist vanaf hier
  • test.C: 2: 46: fout: onvolledig type & lsquo; X 'gebruikt in geneste naamspecificatie
  • Met de nieuwe #pragma GCC ivdep kan de gebruiker beweren dat er geen lus-afhankelijke afhankelijkheden zijn die gelijktijdige uitvoering van opeenvolgende iteraties met SIMD (single instruction multiple data) instructies zouden voorkomen.
  • Ondersteuning voor Cilk Plus is toegevoegd en kan worden ingeschakeld met de optie -fcilkplus. Cilk Plus is een uitbreiding op de C- en C ++ -talen om data- en taakparallellisme te ondersteunen. De huidige implementatie volgt ABI-versie 1.2; alle functies, maar _Cilk_for zijn geïmplementeerd.
  • ISO C11-atomics (de specificatie en kwalificatie van het type Atomic en de header) worden nu ondersteund.
  • Generieke ISO C11-selecties (_Generic keyword) worden nu ondersteund.
  • ISO C11 thread-local storage (_Thread_local, vergelijkbaar met GNU C __thread) wordt nu ondersteund.
  • ISO C11-ondersteuning is nu op een vergelijkbaar niveau van volledigheid als de ISO C99-ondersteuning: substantieel volledige modulo-bugs, uitgebreide ID's (ondersteund, behalve voor hoekgevallen wanneer -fextended-ID's worden gebruikt), drijvende-komma-problemen (hoofdzakelijk maar niet volledig) betreffende optionele C99-kenmerken van de bijlagen F en G) en de optionele bijlagen K (interfaces voor grenscontrole) en L (analyse).
  • Een nieuwe C-extensie __auto_type biedt een subset van de functionaliteit van C ++ 11 auto in GNU C.
  • C ++:
  • De G ++ -implementatie van C ++ 1y-aftrek van het terugnametype voor normale functies is geüpdatet conform N3638, het voorstel geaccepteerd in het werkdocument. Het meest opvallende is dat het decltype (auto) toevoegt voor het verkrijgen van de declant-semantiek in plaats van de deductiem Semantiek van het template-argument van gewoon automatisch:
  • int & amp; f ();
  • auto i1 = f (); // int
  • decltype (automatisch) i2 = f (); // int & amp;
  • G ++ ondersteunt C ++ 1y lambda capture-initializers:
  • [x = 42] {...};
  • Eigenlijk zijn ze geaccepteerd sinds GCC 4.5, maar nu waarschuwt de compiler daar niet voor met -std = c ++ 1y en ondersteunt ook initializers met haakjes en brace.
  • G ++ ondersteunt C ++ 1y arrays met variabele lengte. G ++ ondersteunt al lang GNU / C99-achtige VLA's, maar ondersteunt nu ook initializers en lambda-capture door te verwijzen. In de modus C ++ 1y klaagt G ++ over VLA-gebruik dat niet is toegestaan ​​door de conceptnorm, zoals het vormen van een aanwijzer naar het VLA-type of het toepassen van sizeof op een VLA-variabele. Merk op dat nu blijkt dat VLA's geen deel zullen uitmaken van C ++ 14, maar deel zullen uitmaken van een afzonderlijk document en dan misschien C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // gooit std :: bad_array_length als n & lt; 3
  • [& amp; a] {voor (int i: a) {cout

Wat is nieuw in versie 4.9.1:

  • GCC 4.9.1 is een bugfix-release van de GCC 4.9-tak met belangrijke fixes voor regressies en serieuze bugs in GCC 4.9.0 met meer dan 88 bugs verholpen sinds de vorige release. Bovendien ondersteunt de release van GCC 4.9.1 OpenMP 4.0 ook in Fortran, in plaats van alleen in C en C ++.

Wat is nieuw in versie 4.9.0:

  • Algemene optimalizer-verbeteringen:
  • AddressSanitizer, een snelle geheugenfoutdetector, is nu beschikbaar op ARM.
  • UndefinedBehaviorSanitizer (ubsan), een snelle ongedefinieerde gedragsdetector, is toegevoegd en kan worden ingeschakeld via -fsanitize = undefined. Verschillende berekeningen worden geïnstrumenteerd om ongedefinieerd gedrag tijdens runtime te detecteren. UndefinedBehaviorSanitizer is momenteel beschikbaar voor de talen C en C ++.
  • Verbeteringen in de optimalisatie van de koppelingstijd (LTO):
  • Type samenvoegen is herschreven. De nieuwe implementatie is aanzienlijk sneller en gebruikt minder geheugen.
  • Beter partitioneringsalgoritme wat resulteert in minder streaming tijdens verbindingstijd.
  • Vroege verwijdering van virtuele methoden vermindert de grootte van objectbestanden en verbetert het gebruik van geheugen voor link-time geheugen en compileertijd.
  • Functielichamen worden nu on-demand geladen en vrijgegeven om het algehele geheugengebruik op het moment van koppelen te verbeteren.
  • C ++ verborgen sleutelmethoden kunnen nu worden geoptimaliseerd.
  • Wanneer u een linker-plug-in gebruikt, genereert het compileren met de -flto-optie nu slanke-objectenbestanden (.o) die alleen LTO-afbeeldingen bevatten. Gebruik -ffat-lto-objecten om bestanden te maken die bovendien de objectcode bevatten. Gebruik gcc-ar en gcc-ranlib om statische bibliotheken te genereren die geschikt zijn voor LTO-verwerking; om symbolen uit een slank objectbestand te gebruiken, gebruik je gcc-nm. (Vereist dat ar, ranlib en nm zijn gecompileerd met ondersteuning voor plug-ins.)
  • Geheugengebruik bij het bouwen van Firefox met debug ingeschakeld, is verlaagd van 15 GB naar 3,5 GB; koppelingstijd van 1700 seconden tot 350 seconden.
  • Verbeteringen van inter-procedurele optimalisatie:
  • Module voor analyse van nieuwe overervingsanalyses die de devirtualisatie verbetert. Bij Devirtualisatie wordt nu rekening gehouden met anonieme naamruimten en het definitieve C ++ 11-sleutelwoord.
  • Nieuwe pas voor speculatieve devirtualisatie (gecontroleerd door -fdevirtualize-speculatively.
  • Gesprekken die speculatief direct werden gemaakt, worden teruggedraaid naar indirect, waar direct bellen niet goedkoper is.
  • Lokale aliassen worden geïntroduceerd voor symbolen waarvan bekend is dat ze semantisch equivalent zijn in gedeelde bibliotheken waardoor de dynamische koppelingstijden worden verbeterd.
  • Feedbackgerichte optimalisatieverbeteringen:
  • Profilering van programma's met C ++ inline-functies is nu betrouwbaarder.
  • Nieuwe tijdprofilering bepaalt de typische volgorde waarin functies worden uitgevoerd.
  • Een nieuwe functie herordeningspas (bestuurd door -forder-functies) verkort de opstarttijd van grote applicaties aanzienlijk. Tot de ondersteuning van binutils is voltooid, werkt deze alleen met optimalisatie van de link-time.
  • Feedbackgedreven indirecte oproepverwijdering en devirtualisatie verwerken nu cross-module calls wanneer link-time optimalisatie is ingeschakeld.
  • Nieuwe talen en taalspecifieke verbeteringen:
  • Versie 4.0 van de OpenMP-specificatie wordt nu ondersteund voor de C- en C ++ -compilers. De nieuwe -fopenmp-simd optie kan worden gebruikt om OpenMP's SIMD-richtlijnen in te schakelen, terwijl andere OpenMP-richtlijnen worden genegeerd. De nieuwe -fsimd-cost-model = optie maakt het mogelijk om het vectorization cost-model af te stemmen op loops geannoteerd met OpenMP en Cilk Plus simd-richtlijnen; -Wopenmp-simd waarschuwt wanneer het huidige kostenmodel de simd-richtlijnen vervangt die door de gebruiker zijn ingesteld.
  • De optie -Wdate-time is toegevoegd voor de compilers C, C ++ en Fortran, die waarschuwt wanneer de macro's __DATE__, __TIME__ of __TIMESTAMP__ worden gebruikt. Die macro's kunnen bit-wise identieke reproduceerbare compilaties voorkomen.
  • Ada:
  • GNAT is standaard overgeschakeld naar Ada 2012 in plaats van Ada 2005.
  • C-familie:
  • Ondersteuning voor kleurendiagnostiek afkomstig van GCC is toegevoegd. De -fdiagnostiek-kleur = automatisch zal het inschakelen bij uitvoer naar terminals, -fdiagnostiek -kleur = altijd onvoorwaardelijk. De GCC_COLORS omgevingsvariabele kan worden gebruikt om de kleuren aan te passen of kleuren uit te schakelen. Als de variabele GCC_COLORS in de omgeving aanwezig is, is de standaard -fdiagnostiek -kleur = auto, anders -fdiagnostiek -kleur = nooit.
  • Voorbeelddiagnostische uitvoer:
  • $ g ++ -fdiagnostics-color = always -S-Wall test.C
  • test.C: in functie & lsquo; int foo () ':
  • test.C: 1: 14: warning: no return statement in functie retourneert niet-ongeldig [-Wreturn-type]
  • int foo () {}
  • test.C: 2: 46: fout: de sjabloonconfiguratiediepte overschrijdt het maximum van 900 (gebruik -ftemplate-depth = om het maximum te verhogen) en structureert & lsquo; struct X '
  • template struct X {static const int value = X :: value; }; sjabloon struct X;
  • test.C: 2: 46: recursief vereist van & lsquo; const int X :: value '
  • test.C: 2: 46: vereist van & lsquo; const int X :: value '
  • test.C: 2: 88: vereist vanaf hier
  • test.C: 2: 46: fout: onvolledig type & lsquo; X 'gebruikt in geneste naamspecificatie
  • Met de nieuwe #pragma GCC ivdep kan de gebruiker beweren dat er geen lus-afhankelijke afhankelijkheden zijn die gelijktijdige uitvoering van opeenvolgende iteraties met SIMD (single instruction multiple data) instructies zouden voorkomen.
  • Ondersteuning voor Cilk Plus is toegevoegd en kan worden ingeschakeld met de optie -fcilkplus. Cilk Plus is een uitbreiding op de C- en C ++ -talen om data- en taakparallellisme te ondersteunen. De huidige implementatie volgt ABI-versie 1.2; alle functies, maar _Cilk_for zijn geïmplementeerd.
  • ISO C11-atomics (de specificatie en kwalificatie van het type Atomic en de header) worden nu ondersteund.
  • Generieke ISO C11-selecties (_Generic keyword) worden nu ondersteund.
  • ISO C11 thread-local storage (_Thread_local, vergelijkbaar met GNU C __thread) wordt nu ondersteund.
  • ISO C11-ondersteuning is nu op een vergelijkbaar niveau van volledigheid als de ISO C99-ondersteuning: substantieel volledige modulo-bugs, uitgebreide ID's (ondersteund, behalve voor hoekgevallen wanneer -fextended-ID's worden gebruikt), drijvende-komma-problemen (hoofdzakelijk maar niet volledig) betreffende optionele C99-kenmerken van de bijlagen F en G) en de optionele bijlagen K (interfaces voor grenscontrole) en L (analyse).
  • Een nieuwe C-extensie __auto_type biedt een subset van de functionaliteit van C ++ 11 auto in GNU C.
  • C ++:
  • De G ++ -implementatie van C ++ 1y-aftrek van het terugnametype voor normale functies is geüpdatet conform N3638, het voorstel geaccepteerd in het werkdocument. Het meest opvallende is dat het decltype (auto) toevoegt voor het verkrijgen van de declant-semantiek in plaats van de deductiem Semantiek van het template-argument van gewoon automatisch:
  • int & amp; f ();
  • auto i1 = f (); // int
  • decltype (automatisch) i2 = f (); // int & amp;
  • G ++ ondersteunt C ++ 1y lambda capture-initializers:
  • [x = 42] {...};
  • Eigenlijk zijn ze geaccepteerd sinds GCC 4.5, maar nu waarschuwt de compiler daar niet voor met -std = c ++ 1y en ondersteunt ook initializers met haakjes en brace.
  • G ++ ondersteunt C ++ 1y arrays met variabele lengte. G ++ ondersteunt al lang GNU / C99-achtige VLA's, maar ondersteunt nu ook initializers en lambda-capture door te verwijzen. In de modus C ++ 1y klaagt G ++ over VLA-gebruik dat niet is toegestaan ​​door de conceptnorm, zoals het vormen van een aanwijzer naar het VLA-type of het toepassen van sizeof op een VLA-variabele. Merk op dat nu blijkt dat VLA's geen deel zullen uitmaken van C ++ 14, maar deel zullen uitmaken van een afzonderlijk document en dan misschien C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // gooit std :: bad_array_length als n & lt; 3
  • [& amp; a] {voor (int i: a) {cout

Vergelijkbare software

Lua
Lua

17 Aug 18

Octave
Octave

2 Jun 15

Reacties op GCC

1 Commentaar
  • 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
Commentaar toe te voegen
Zet op de beelden!