GCC

Software screenshot:
GCC
Software ətraflı:
Version: 8.2.0 Yenil?nib
Tarixi Upload: 16 Aug 18
Geliştirici: The GCC Team
Lisenziya: Pulsuz
Məşhurluq: 108

Rating: 3.0/5 (Total Votes: 3)

GCC (GNU Derleyici Koleksiyonu), GNU / Linux ve BSD-based işletim sistemi üçün bir derleyici rolünü oynamak üçün tasarlanmış açıq mənbə bir komut satırı proqramıdır. O, Objective-C, Go, C ++, Java, C, Ada və Fortran daxil olmaqla bir çox proqramlaşdırma dilləri üçün ön uçları ehtiva edir.


Bir baxışda xüsusiyyətləri

GCC ilə GNU / Linux proqramlarını Linux və ya BSD əməliyyat sistemlərində konfiqurasiya, tərtib və quraşdırmaq yalnız müvafiq proqramın mənbə arxivindən istifadə edə bilər. Bununla belə, istifadəçilər kompilyatorla qarşılıqlı əlaqəlidirlər, çünki bu, avtomatik olaraq konfiqurasiya və skriptlər etməklə həyata keçirilir.

Layihə həmçinin libstdc və libgcj kimi müxtəlif proqramlaşdırma dilləri üçün kitabxanaları və ən GNU proqramları kimi, kompüterinizə quraşdırılmadan və quraşdırılmadan əvvəl konfiqurasiya edilməlidir.

Ayrıca, müəyyən bir kütüphanenin tam yolunu, derleyici axtarış yolundaki klasörleri, xüsusi bir komponentin tam yolunu, hədəf kitabxanaların kataloqunu, başlıqları tapmaq üçün istifadə olunan sysroot sonekini və hədəfin normallaşdırılmış GNU üçlüsünü göstərə bilər.

Bundan əlavə, bəzi vergüllə ayrılmış variantları və arqumentləri assembler, preprocessor və linkerə ötürmək, birləşmədən, paylaşılan bir kitabxana yaratmaq və bir çoxları yığışdırmaq və yığmaq üçün müxtəlif variantlar var.


GNU əməliyyat sistemi üçün nəzərdə tutulmuşdur

GNU əməliyyat sisteminin əsas kompilyatoru olaraq yazıldığı üçün GCC (GNU Compiler Collection) 100% pulsuz proqram olaraq hazırlanmış və hər hansı bir Linux dağılımında default olaraq quraşdırılmışdır.

Proqram həmçinin Open Source developers tərəfindən proqramlarını tərtib etmək üçün istifadə olunur. Komanda xəttində bir neçə variant mövcuddur ki, bunlar arasında kompilyatorun hədəf prosessorunu və eyni zamanda OS kitabxanalarına nisbi yolun göstərilməsini göstərə bilərik.


Aşağı xətt

Ümumilikdə, GCC hər hansı bir GNU / Linux əməliyyat sisteminin ən mühüm komponentlərindən biridir.

Bu sürümde yeni nə : : : p>GCC 7.3, GCC 7.2-də, GCC 7.2-də regressiyalar və ciddi səhvlər üçün mühüm düzəlişləri olan GCC 7 şöbəsindən bir əvvəlki sərbəstdən sabit 99-dan çox səhv olan bir səhvdir.

  • Bu sürüm x86 və powerpc hədəfləri üçün Specter Variant 2 (CVE 2017-5715) səviyyəsini azaltmaq üçün kod istehsal variantlarını ehtiva edir.
  • Yeni versiyası 8.1.0:

    • GCC 7.3, GCC 7 filialı, əvvəlki sərbəstdən bu yana 99-dən çox səhv olan GCC 7.2-də regressiyalar və ciddi səhvlər üçün əhəmiyyətli düzəlişlər ehtiva edir.
    • Bu sürüm x86 və powerpc hədəfləri üçün Specter Variant 2 (CVE 2017-5715) səviyyəsini azaltmaq üçün kod istehsal variantlarını ehtiva edir.

    Sürümdeki yeni :

    • GCC 7.1, GCC 6.x və ya əvvəlki GCC sürümlerinde mövcud olmayan əhəmiyyətli yeni funksiyaları ehtiva edən böyük bir buraxılışdır. C ++ ön tərəfindəki mövcud C ++ 17 layihəsi üçün, -std = c ++ 1z və -std = gnu ++ 1z variantları ilə eksperimental dəstək var və libstdc ++ kitabxanasında C ++ 17 layihəsinin əksəriyyəti var kitabxana xüsusiyyətləri də həyata keçirilir. Bu buraxılışlar təkmilləşdirilmiş yerlər, yer aralıkları, yanlış yazılmış identifikatorlar üçün təkliflər, seçim adları, düzeltmeli göstərişlər və müxtəlif yeni xəbərdarlıqlar əlavə edilmiş yayılmış diaqnostika ilə bağlı müxtəlif təkmilləşdirmələrə malikdir. Optimallaşdırıcılar, mağaza içərisində birləşmə keçidinin əlavə edilməsi, kod qaldırıcı optimallaşdırma, loop parçalanma və küçülmək daxil olmaqla, lakin bunlarla məhdudlaşmayan bütün intra və proseslərarası optimallaşdırmalarda, əlaqə müddətinin optimallaşdırılmasında və müxtəlif hədəf arxivlərində görünən təkmilləşdirmələrlə təkmilləşdirilmişdir inkişaf etdirmə. Ünvan Sanitizer, onların əhatəsini tərk etdikdən sonra dəyişənlərin istifadə etdiklərini bildirir. GCC indi OpenMP 4.5 üçün NVidia PTX GPGPU'larına boşaltma üçün konfiqurasiya edilə bilər.

    Sürüm 6.3.0'da yeni :

    • GCC 6.3, əvvəlki versiyadan bu yana sabit 79-dan çox səhv ilə GCC 6.2-də regressions və ciddi səhvlər üçün əhəmiyyətli düzəlişlər olan GCC 6 filialından bir səhv fix azaddır.

    Yeni versiyası 6.2.0:

    • Bu sürüm, GCC'nin əvvəlki sürümlerine göre GCC 5.2'deki regresyonlar üçün düzeltmeler içeren bir hata düzeltme sürümüdür.

    Yeni versiyası 6.1.0:

    • Bu sürüm, GCC'nin əvvəlki sürümlerine göre GCC 5.2'deki regresyonlar üçün düzeltmeler içeren bir hata düzeltme sürümüdür.

    Yeni versiyası 5.3.0:

    • Bu sürüm, GCC'nin əvvəlki sürümlerine göre GCC 5.2'deki regresyonlar üçün düzeltmeler içeren bir hata düzeltme sürümüdür.

    Yeni versiyası 5.2.0:

    • Bu versiya GCC-nin əvvəlki versiyasına nisbətən GCC 5.1-də regressiyalara dair düzəlişləri olan bir səhv düzeltmedir.

    5.1.0 sürümünde yeni :

    • C ++ ön uçunda artıq tam C ++ 14 dil dəstəyi və Standart C ++ Kitabxanasında tam C ++ 11 dəstəyi və eksperimental tam C ++ 14 dəstəyi var. Tam C ++ 11 dəstəyi, Dual ABI qəbul edərək, daha ətraflı məlumat üçün https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html bax. Mümkündür.
    • C ön uçu indi C11 rejimi üçün GNU uzantıları ilə daxil olur və bu, inline sözün semantikasını təsir edir və bir neçə digər istifadəçinin görünən dəyişiklikləri gətirir, bax https://gcc.gnu.org/gcc-5/porting_to.html daha ətraflı məlumat üçün.
    • GCC 5.1, müxtəlif müdaxilə optimallaşdırma təkmilləşdirmələri, məs. yeni bir IPA İddia Kodu Qatlanan keçid və müxtəlif LTO təkmilləşdirmələri, məs. C ++ növlərinin birləşməsinə əsaslanan ODR, daha ətraflı məlumat üçün http://hubicka.blogspot.cz/2015/04/GCC5-IPA-LTO-news.html ünvanına baxın.
    • GCC 5.1 Yerli Qeydiyyat Allocator, i / 86 / x86-64-də, mövqeyi müstəqil kodun yerinə yetirilməsini yaxşılaşdırmaq üçün PIC sabit qeydiyyatdan təkrar istifadə edə bilən bir rematerialization subpass ehtiva edir, sadə interprocedural RA pass və başqa bir sıra ayırma təkmilləşdirmələri əlavə edildi.
    • GCC 5.1, OpenACC standartı üçün qismən dəstək, Intel'in qarşıdakı Xeon Phi sürətləndiricilərinə OpenMP 4.0 yükləməsinə dəstək və PTX-yə OpenACC-in boşaldılması üçün dəstək verir. GCC'teki Tanımsız Davranış Sanitizer, çeşitli yeni çalışma zamanlarını ekleyerek uzatılmıştır. GCC 5.1-də eksperimental GCC JIT kitabxanası əlavə edilib.

    4.8.4 versiyasında yeni nə :

    • Ümumi Doktoru İyileştirmeleri:
    • ÜnvanlıSanitizer, sürətli yaddaş hatası dedektörü, indi ARM'de mövcuddur.
    • UndefinedBehaviorSanitizer (ubsan), sürətli tanımlanmamış bir davranış detektoru əlavə edildi və -fsanitize = undefined vasitəsilə effektiv ola bilər. Müxtəlif hesablamalar, iş vaxtında müəyyən edilməyən davranışı aşkar etmək üçün vasitəyə çevriləcəkdir. TanımlanmamışBehaviorSanitizer C və C ++ dillərində mövcuddur.
    • Link-zaman optimallaşdırması (LTO) təkmilləşdirilməsi:
    • Birləşmə növü yenidən yazıldı. Yeni tətbiq əhəmiyyətli dərəcədə daha sürətli və daha az yaddaş istifadə edir.
    • Bağlantı zamanı daha az axınla nəticələnən daha yaxşı bölmə alqoritmi.
    • Virtual üsulların erkən çıxarılması obyekt fayllarının ölçüsünü azaldır və link-vaxt yaddaşının istifadəsini artırır və vaxt tərtib edir.
    • Funksiya orqanları artıq tələb olundular və əlaqə dövründə ümumi yaddaşın erkən istifadə edilməsini sərbəst buraxdılar.
    • C ++ gizli açar üsulları indi optimize edilə bilər.
    • Bir linker plugin istifadə edərkən, -flto seçimi ilə kompilyasiya edilməklə, yalnız LTO üçün ara dil təqdimatını ehtiva edən incə obyekt faylları (.o) yaradır. Əlavə obyekt kodunu ehtiva edən faylları yaratmaq üçün, -fut-lto-obyektləri istifadə edin. LTO emalına uyğun statik kitabxanalar yaratmaq üçün gcc-ar və gcc-ranlib; incə obyekt faylından simvollar sıralamaq üçün gcc-nm istifadə edin. (Bu, ar, ranlib və nm plugin dəstəyi ilə tərtib olunmasını tələb edir.)
    • Yaddaş istifadəsi bürosunun firefoxu 15 GB-dan 3.5 GB-a qədər azaldılıb; link vaxt 1700 saniyədən 350 saniyəyə qədər.
    • Prosessual proseslərin optimallaşdırılması təkmilləşdirilməsi:
    • Yeni tip devralma analiz moduli devirtualizasiyanı yaxşılaşdırır. Devirtualizasiya indi anonim ad boşluqlarını və C ++ 11 yekun sözünü nəzərə alır.
    • Yeni spekulyativ devirtualizasiya keçişi (idarəedici-spekulyativ şəkildə idarə olunur.
    • Spekulyativ birbaşa edilən zənglər doğrudan çağırış daha ucuz deyilsə dolayı geri çevrilirlər.
    • Yerli takma adlar, dinamik bağlama müddətlərini yaxşılaşdıran paylaşılan kitabxanalarda semantik olaraq bərabər olduğu bilinən simvollara təqdim olunur.
    • Əlaqə istiqamətləndirilmiş optimallaşdırma təkmilləşdirmələri:
    • C ++ inline funksiyaları istifadə edərək proqramların profilləri artıq daha etibarlıdır.
    • Yeni vaxt profilləri funksiyaları yerinə yetirən tipik qaydada müəyyənləşdirir.
    • Yeni funksiyanı yenidən təyin etmə (idarəedici funksiyaları ilə idarə olunur) böyük tətbiqlərin başlanğıc müddətini əhəmiyyətli dərəcədə azaldır. Binutils dəstəyi tamamlanana qədər yalnız link-zaman optimallaşdırması ilə təsirli olur.
    • Əlaqəli idarə edilən dolayı zəng aradan qaldırılması və devirtualizasiya indi link-zaman optimallaşdırma effektiv olduqda cross-modul çağırışlarını idarə edir.
    • Yeni Dillər və Dilə xüsusi inkişaflar:
    • OpenMP xüsusiyyətinin 4.0 versiyası artıq C və C ++ tərtibatında dəstəklənir və Fortran derleyicisində də 4.9.1 versiyasından başlayır. Yeni -fopenmp-simd seçimi OpenMP-nin SİMD direktivlərini təmin etmək üçün istifadə edilə bilər, digər OpenMP direktivlərinə baxmayaraq. Yeni - dəyərli dəyəri modeli = opsiyalar OpenMP və Cilk Plus simd direktivləri ilə bağlı şərhlər üçün vektorizasiya xərcləri modelini tənzimləmək üçün imkan verir; -Wopenmp-simd, mövcud dəyər modeli istifadəçi tərəfindən təyin olunan simd direktivlərini ləğv etdikdə xəbərdar edir.
    • __DATE__, __TIME__ və ya __TIMESTAMP__ makroları istifadə edildikdə xəbərdar edən C, C + + və Fortran derleyicileri üçün -Wdate-time seçimi əlavə edildi. Bu makrolar bit-müdrik birbaşa reproducible kompilyasiyaların qarşısını ala bilər.
    • Ada:
    • GNAT default olaraq Ada 2005 əvəzinə Ada 2012-ə keçdi.
    • C ailəsi:
    • GCC tərəfindən yayılmış diaqnostikanın rənglənməsi üçün dəstək əlavə edildi. "Fadiagnostics-color = auto" terminallara çıxış edərkən, -fdiagnostics-color = hər zaman qeyd-şərtsiz olaraq imkan verəcəkdir. GCC_COLORS ətraf mühiti dəyişən rəngləri rəngləndirmək və ya rəngləndirmək üçün istifadə edilə bilər. Ətraf mühitdə GCC_COLORS dəyişən varsa, default -fdiagnostics-color = auto, əks halda -fdiagnostics-color = heç vaxt.
    • Nümunə diaqnostikası çıxışı:
    • $ g ++ -fdiagnostics-color = hər zaman -S -Wall test.C
    • test.C: funksiyada 'int foo ()':
    • test.C: 1: 14: xəbərdarlıq: qeyri-qayıtmayan funksiyaya geri qaytarılmayan bəyanat yoxdur [-Turn-tipli]
    • int foo () {}
    • test.C: 2: 46: səhv: şablon dərsi dərinliyi maksimum 900-dən (maksimumu artırmaq üçün istifadə etmək üçün istifadə) - struct X '
    • şablon strukturu X static const int value = X :: dəyər; }; şablon struct X;
    • test.C: 2: 46: recursively tələb olunur & const int X :: dəyər '
    • test.C: 2: 46: "const int X: dəyərdən" tələb olunur
    • test.C: 2: 88: buradan tələb olunur
    • test.C: 2: 46: səhv: içərisindəki adı göstəricisində istifadə edilən 'X' natamam tipi
    • Yeni #pragma GCC ivdep ilə istifadəçi SIMD (tək təlimatlı birdən çox məlumat) talimatları ilə ardıcıl təkrarlamaların eyni vaxtda yerinə yetirilməsini maneə törətməyən heç bir daşıyan keçidlər olmadığını iddia edə bilər.
    • Cilk Plus üçün dəstək əlavə edildi və -fcilkplus seçimi ilə effektiv ola bilər. Cilk Plus, C və C ++ dillərinə məlumat və vəzifə paralelliklərini dəstəkləmək üçün bir uzantıdır. Hazırkı tətbiq ABİ versiyasının 1.2-i; _Cilk_for bütün xüsusiyyətləri yerinə yetirilmişdir.
    • ISO C11 atomları (_Atomic type specifier and qualifier və header) artıq dəstəklənir.
    • ISO C11 ümumi seçimləri (_Generic söz) indi dəstəklənir.
    • ISO C11 iş parçacığı lokal storage (_Thread_local, GNU C __sread kimi) hazırda dəstəklənir.
    • ISO C11 dəstəyi artıq ISO C99 dəstəyinə bənzər bir səviyyədədir: əhəmiyyətli dərəcədə tam modulo hataları, geniş identifikatorlar (köşə halları istisna olmaqla -fedilmiş-identifikatorlar istisna olmaqla dəstəklənir), üzən nöqtəli məsələlər (əsasən, Əlavə F və G-dən seçmə C99 xüsusiyyətləri ilə bağlı) və isteğe bağlı əlavə K (Bound-checking interfeys) və L (Analizable).
    • Yeni C uzadılması __auto_type, GNU C-də C ++ 11 avtomatik funksionallığın alt kümesini təqdim edir.
    • C ++:
    • Normal funksiyalar üçün C ++ 1y növbədənkənar tipli çıxışın G ++ tətbiqi N3638-ə uyğun olaraq yenilənmişdir. Xüsusilə, düz avtomatik olaraq şablonu arqumenti ayırma semantikası deyil, decltype semantikləri almaq üçün decltype (auto) əlavə edir:
    • int & amp; f ();
    • auto i1 = f (); // int
    • decltype (auto) i2 = f (); // int & amp;
    • G ++ C ++ 1y lambda tutma başlanğıclarını dəstəkləyir:
    • [x = 42] {...};
    • Əslində, onlar GCC 4.5-dən etibarən qəbul edilmişdir, lakin indi derleyici onlar haqqında -std = c ++ 1y ilə xəbərdar etmir və parantez və brace-enclosed initializers dəstəkləyir.
    • G ++, C ++ 1y dəyişən uzunluqlu dizilerini dəstəkləyir. G ++ uzun müddət GNU / C99 stilli VLA'ları dəstəklədi, lakin indi əlavə olaraq başlanğıcları və lambda tutmağını istinad edir. C ++ 1y rejimində G ++ VLA-nın istifadə etdiyi VLA tipinə bir göstəricinin formalaşdırılması və ya ölçünün VLA dəyişəninə tətbiq edilməsi kimi standart layihəsi tərəfindən icazə verilməməsindən şikayət edəcəkdir. Qeyd edək ki, VLA-lar C ++ 14-nin bir hissəsi olmayacaq, lakin ayrı bir sənədin bir hissəsi və sonra C ++ 17 olacaqdır.
    • void f (int n) {
    • int a [n] = {1, 2, 3}; // std :: bad_array_length verərsə n & lt; 3
    • [& amp; a] {for (int i: a) {cout

    Nə yeni versiyası 4.9.1:

    • GCC 4.9.1, əvvəlki versiyadan bu yana 88-dən çox səhv olan GCC 4.9.0-da regressiyalar və ciddi səhvlər üçün mühüm düzəlişləri olan GCC 4.9 şöbəsindən səhv düzəldilməkdir. Bununla yanaşı, GCC 4.9.1 versiyası OpenMP 4.0-i yalnız C və C ++-da deyil, Fortran-da dəstəkləyir.

    Sürüm 4.9.0'da yeni nə :

    • Ümumi Doktoru İyileştirmeleri:
    • ÜnvanlıSanitizer, sürətli yaddaş hatası dedektörü, indi ARM'de mövcuddur.
    • UndefinedBehaviorSanitizer (ubsan), sürətli tanımlanmamış bir davranış detektoru əlavə edildi və -fsanitize = undefined vasitəsilə effektiv ola bilər. Müxtəlif hesablamalar, iş vaxtında müəyyən edilməyən davranışı aşkar etmək üçün vasitəyə çevriləcəkdir. TanımlanmamışBehaviorSanitizer C və C ++ dillərində mövcuddur.
    • Link-zaman optimallaşdırması (LTO) təkmilləşdirilməsi:
    • Birləşmə növü yenidən yazıldı. Yeni tətbiq əhəmiyyətli dərəcədə daha sürətli və daha az yaddaş istifadə edir.
    • Bağlantı zamanı daha az axınla nəticələnən daha yaxşı bölmə alqoritmi.
    • Virtual üsulların erkən çıxarılması obyekt fayllarının ölçüsünü azaldır və link-vaxt yaddaşının istifadəsini artırır və vaxt tərtib edir.
    • Funksiya orqanları artıq tələb olundular və əlaqə dövründə ümumi yaddaşın erkən istifadə edilməsini sərbəst buraxdılar.
    • C ++ gizli açar üsulları indi optimize edilə bilər.
    • Bir linker plugin istifadə edərkən, -flto seçimi ilə kompilyasiya, yalnız LTO üçün ara dil təqdimatını əks etdirən incə obyektlər faylları (.o) yaradır. Əlavə obyekt kodunu ehtiva edən faylları yaratmaq üçün, -fut-lto-obyektləri istifadə edin. LTO emalına uyğun statik kitabxanalar yaratmaq üçün gcc-ar və gcc-ranlib; incə obyekt faylından simvollar sıralamaq üçün gcc-nm istifadə edin. (Ar, ranlib və nm plugin dəstəyi ilə tərtib olunmalıdır)
    • Yaddaş istifadəsi bürosunun firefoxu 15 GB-dan 3.5 GB-a qədər azaldılıb; link vaxt 1700 saniyədən 350 saniyəyə qədər.
    • Prosessual proseslərin optimallaşdırılması təkmilləşdirilməsi:
    • Yeni tip devralma analiz moduli devirtualizasiyanı yaxşılaşdırır. Devirtualizasiya indi anonim ad boşluqlarını və C ++ 11 yekun sözünü nəzərə alır.
    • Yeni spekulyativ devirtualizasiya keçişi (idarəedici-spekulyativ şəkildə idarə olunur.
    • Spekulyativ birbaşa edilən zənglər doğrudan çağırış daha ucuz deyilsə dolayı geri çevrilirlər.
    • Yerli takma adlar, dinamik bağlama müddətlərini yaxşılaşdıran paylaşılan kitabxanalarda semantik olaraq bərabər olduğu bilinən simvollara təqdim olunur.
    • Əlaqə istiqamətləndirilmiş optimallaşdırma təkmilləşdirmələri:
    • C ++ inline funksiyaları istifadə edərək proqramların profilləri artıq daha etibarlıdır.
    • Yeni vaxt profilləri funksiyaları yerinə yetirən tipik qaydada müəyyənləşdirir.
    • Yeni funksiyanı yenidən təyin etmə (idarəedici funksiyaları ilə idarə olunur) böyük tətbiqlərin başlanğıc müddətini əhəmiyyətli dərəcədə azaldır. Binutils dəstəyi tamamlanana qədər yalnız link-zaman optimallaşdırması ilə təsirli olur.
    • Əlaqəli idarə edilən dolayı zəng aradan qaldırılması və devirtualizasiya indi link-zaman optimallaşdırma effektiv olduqda cross-modul çağırışlarını idarə edir.
    • Yeni Dillər və Dilə xüsusi inkişaflar:
    • OpenMP xüsusiyyətinin 4.0 versiyası artıq C və C ++ tərtibatçıları üçün dəstəklənir. Yeni -fopenmp-simd seçimi OpenMP-nin SİMD direktivlərini təmin etmək üçün istifadə edilə bilər, digər OpenMP direktivlərinə baxmayaraq. Yeni - dəyərli dəyəri modeli = opsiyalar OpenMP və Cilk Plus simd direktivləri ilə bağlı şərhlər üçün vektorizasiya xərcləri modelini tənzimləmək üçün imkan verir; -Wopenmp-simd, mövcud xərc kodunun istifadəçi tərəfindən müəyyən edilmiş simd direktivlərini ləğv etdiyini xəbərdar edir.
    • __DATE__, __TIME__ və ya __TIMESTAMP__ makroları istifadə edildikdə xəbərdar edən C, C + + və Fortran derleyicileri üçün -Wdate-time seçimi əlavə edildi. Bu makrolar bit-müdrik birbaşa reproducible kompilyasiyaların qarşısını ala bilər.
    • Ada:
    • GNAT default olaraq Ada 2005 əvəzinə Ada 2012-ə keçdi.
    • C ailəsi:
    • GCC tərəfindən yayılmış diaqnostikanın rənglənməsi üçün dəstək əlavə edildi. "Fadiagnostics-color = auto" terminallara çıxış edərkən, -fdiagnostics-color = hər zaman qeyd-şərtsiz olaraq imkan verəcəkdir. GCC_COLORS ətraf mühiti dəyişən rəngləri rəngləndirmək və ya rəngləndirmək üçün istifadə edilə bilər. Ətraf mühitdə GCC_COLORS dəyişən varsa, default -fdiagnostics-color = auto, əks halda -fdiagnostics-color = heç vaxt.
    • Nümunə diaqnostikası çıxışı:
    • $ g ++ -fdiagnostics-color = hər zaman -S -Wall test.C
    • test.C: funksiyada 'int foo ()':
    • test.C: 1: 14: xəbərdarlıq: qeyri-qayıtmayan funksiyaya geri qaytarılmayan bəyanat yoxdur [-Turn-tipli]
    • int foo () {}
    • test.C: 2: 46: səhv: şablon dərsi dərinliyi maksimum 900-dən (maksimumu artırmaq üçün istifadə etmək üçün istifadə) - struct X '
    • şablon strukturu X static const int value = X :: dəyər; }; şablon struct X;
    • test.C: 2: 46: recursively tələb olunur & const int X :: dəyər '
    • test.C: 2: 46: "const int X: dəyərdən" tələb olunur
    • test.C: 2: 88: buradan tələb olunur
    • test.C: 2: 46: səhv: içərisindəki adı göstəricisində istifadə edilən 'X' natamam tipi
    • Yeni #pragma GCC ivdep ilə istifadəçi SIMD (tək təlimatlı birdən çox məlumat) talimatları ilə ardıcıl təkrarlamaların eyni vaxtda yerinə yetirilməsini maneə törətməyən heç bir daşıyan keçidlər olmadığını iddia edə bilər.
    • Cilk Plus üçün dəstək əlavə edildi və -fcilkplus seçimi ilə effektiv ola bilər. Cilk Plus, C və C ++ dillərinə məlumat və vəzifə paralelliklərini dəstəkləmək üçün bir uzantıdır. Hazırkı tətbiq ABİ versiyasının 1.2-i; _Cilk_for bütün xüsusiyyətləri yerinə yetirilmişdir.
    • ISO C11 atomları (_Atomic type specifier and qualifier və header) artıq dəstəklənir.
    • ISO C11 ümumi seçimləri (_Generic söz) indi dəstəklənir.
    • ISO C11 iş parçacığı lokal storage (_Thread_local, GNU C __sread kimi) hazırda dəstəklənir.
    • ISO C11 dəstəyi artıq ISO C99 dəstəyinə bənzər bir səviyyədədir: əhəmiyyətli dərəcədə tam modulo hataları, geniş identifikatorlar (köşə halları istisna olmaqla -fedilmiş-identifikatorlar istisna olmaqla dəstəklənir), üzən nöqtəli məsələlər (əsasən, Əlavə F və G-dən seçmə C99 xüsusiyyətləri ilə bağlı) və isteğe bağlı əlavə K (Bound-checking interfeys) və L (Analizable).
    • Yeni C uzadılması __auto_type, GNU C-də C ++ 11 avtomatik funksionallığın alt kümesini təqdim edir.
    • C ++:
    • Normal funksiyalar üçün C ++ 1y növbədənkənar tipli çıxışın G ++ tətbiqi N3638-ə uyğun olaraq yenilənmişdir. Xüsusilə, düz avtomatik olaraq şablonu arqumenti ayırma semantikası deyil, decltype semantikləri almaq üçün decltype (auto) əlavə edir:
    • int & amp; f ();
    • auto i1 = f (); // int
    • decltype (auto) i2 = f (); // int & amp;
    • G ++ C ++ 1y lambda tutma başlanğıclarını dəstəkləyir:
    • [x = 42] {...};
    • Əslində, onlar GCC 4.5-dən etibarən qəbul edilmişdir, lakin indi derleyici onlar haqqında -std = c ++ 1y ilə xəbərdar etmir və parantez və brace-enclosed initializers dəstəkləyir.
    • G ++ C ++ 1y dəyişən uzunluqlu array dəstəkləyir. G ++ uzun müddət GNU / C99 stilli VLA'ları dəstəklədi, lakin indi əlavə olaraq başlanğıcları və lambda tutmağını istinad edir. C ++ 1y rejimində G ++ VLA-nın istifadə etdiyi VLA tipinə bir göstəricinin formalaşdırılması və ya ölçünün VLA dəyişəninə tətbiq edilməsi kimi standart layihəsi tərəfindən icazə verilməməsindən şikayət edəcəkdir. Qeyd edək ki, VLA-lar C ++ 14-nin bir hissəsi olmayacaq, lakin ayrı bir sənədin bir hissəsi və sonra C ++ 17 olacaqdır.
    • void f (int n) {
    • int a [n] = {1, 2, 3}; // std :: bad_array_length verərsə n & lt; 3
    • [& amp; a] {for (int i: a) {cout

    Oxşar proqram

    Şərh GCC

    1 Şərhlər
    • 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
    Şərh əlavə
    Images yandırın!