GCC

Software screenshot:
GCC
Rincian Software:
Versi: 8.2.0 Diperbarui
Tanggal Upload: 16 Aug 18
Pengembang: The GCC Team
Lisensi: Gratis
Popularitas: 108

Rating: 3.0/5 (Total Votes: 3)

GCC (GNU Compiler Collection) adalah perangkat lunak baris perintah open source yang dirancang untuk bertindak sebagai kompiler untuk sistem operasi berbasis GNU / Linux dan BSD. Ini mencakup front-end untuk berbagai bahasa pemrograman, termasuk Objective-C, Go, C ++, Java, C, Ada, dan Fortran.


Fitur sekilas

Dengan GCC Anda dapat mengkonfigurasi, mengkompilasi dan menginstal aplikasi GNU / Linux di sistem operasi Linux atau BSD hanya menggunakan arsip sumber dari program yang bersangkutan. Namun, pengguna tidak perlu berinteraksi dengan kompilator, karena ini dilakukan secara otomatis oleh konfigurasi dan membuat skrip.

Proyek ini juga menyertakan pustaka untuk berbagai bahasa pemrograman, seperti libstdc dan libgcj, dan seperti kebanyakan perangkat lunak GNU, pustaka harus dikonfigurasi sebelum dapat dibuat dan dipasang di komputer Anda.


Ini juga dapat menampilkan path lengkap ke pustaka tertentu, folder di jalur pencarian kompilator, path lengkap ke komponen tertentu, direktori pustaka sasaran, akhiran sysroot yang digunakan untuk mencari header, dan triplet GNU yang dinormalisasi.

p>

Selain itu, ada berbagai opsi lain untuk memberikan opsi dan argumen yang dipisahkan koma ke assembler, preprocessor dan linker, mengkompilasi dan merakit tanpa menghubungkan, membuat pustaka bersama, dan banyak lainnya.


Dirancang untuk sistem operasi GNU

Awalnya ditulis sebagai kompiler utama untuk sistem operasi GNU, GCC (GNU Compiler Collection) dikembangkan menjadi 100% perangkat lunak gratis dan diinstal secara default pada distribusi Linux apa pun.

Perangkat lunak ini juga digunakan oleh para pengembang Open Source untuk menyusun program mereka. Baris perintah dilengkapi dengan beberapa opsi, di antaranya kita dapat menyebutkan kemampuan untuk menampilkan prosesor target compiler & rsquo; serta jalur relatif ke pustaka OS.


Intinya

Secara keseluruhan, GCC adalah salah satu komponen terpenting dari sistem operasi GNU / Linux. Tidak hanya itu kita dapat & rsquo; t bahkan membayangkan dunia tanpa itu, tetapi GCC adalah alasan utama di balik seluruh ekosistem Open Source.

Apa yang baru dalam rilis ini:

  • GCC 7.3 adalah rilis perbaikan bug dari cabang GCC 7 yang berisi perbaikan penting untuk regresi dan bug serius di GCC 7.2 dengan lebih dari 99 bug diperbaiki sejak rilis sebelumnya.
  • Rilis ini termasuk opsi pembuatan kode untuk mengurangi Specter Variant 2 (CVE 2017-5715) untuk target x86 dan powerpc.

Apa yang baru di versi 8.1.0:

  • GCC 7.3 adalah rilis perbaikan bug dari Cabang GCC 7 berisi perbaikan penting untuk regresi dan bug serius di GCC 7.2 dengan lebih dari 99 bug diperbaiki sejak rilis sebelumnya.
  • Rilis ini termasuk opsi pembuatan kode untuk mengurangi Specter Variant 2 (CVE 2017-5715) untuk target x86 dan powerpc.

Apa yang baru dalam versi:

  • GCC 7.1 adalah rilis besar yang mengandung fungsi baru substansial yang tidak tersedia di GCC 6.x atau rilis GCC sebelumnya. C ++ frontend sekarang memiliki dukungan eksperimental untuk semua draft C ++ 17 saat ini, dengan opsi -std = c ++ 1z dan -std = gnu ++ 1z, dan libstdc ++ library memiliki sebagian besar draft C ++ 17 fitur perpustakaan juga diimplementasikan. Rilis ini menampilkan berbagai perbaikan dalam diagnostik yang dipancarkan, termasuk peningkatan lokasi, rentang lokasi, saran untuk pengenal yang salah eja, nama opsi, petunjuk perbaikan, dan berbagai peringatan baru telah ditambahkan. Pengoptimal telah ditingkatkan, dengan peningkatan yang muncul di semua pengoptimalan intra dan inter-prosedural, pengoptimalan waktu tautan, dan berbagai target backend, termasuk, namun tidak terbatas pada, penambahan gabungan penggabungan toko, pengoptimalan pengoptimalan kode, pemisahan loop, dan penyusutan perbaikan pembungkus. Sanitizer Alamat sekarang dapat melaporkan penggunaan variabel setelah meninggalkan ruang lingkup mereka. GCC sekarang dapat dikonfigurasi untuk OpenMP 4.5 offloading ke NVidia PTX GPGPUs.

Apa yang baru di versi 6.3.0:

  • GCC 6.3 adalah rilis perbaikan bug dari cabang GCC 6 yang berisi perbaikan penting untuk regresi dan bug serius di GCC 6.2 dengan lebih dari 79 bug diperbaiki sejak rilis sebelumnya.

Apa yang baru di versi 6.2.0:

  • Rilis ini adalah rilis perbaikan bug, berisi perbaikan untuk regresi di GCC 5.2 relatif terhadap rilis GCC sebelumnya.

Apa yang baru di versi 6.1.0:

  • Rilis ini adalah rilis perbaikan bug, berisi perbaikan untuk regresi di GCC 5.2 relatif terhadap rilis GCC sebelumnya.

Apa yang baru di versi 5.3.0:

  • Rilis ini adalah rilis perbaikan bug, berisi perbaikan untuk regresi di GCC 5.2 relatif terhadap rilis GCC sebelumnya.

Apa yang baru di versi 5.2.0:

  • Rilis ini adalah rilis perbaikan bug, berisi perbaikan untuk regresi di GCC 5.1 relatif terhadap rilis GCC sebelumnya.

Apa yang baru di versi 5.1.0:

  • C ++ front-end sekarang memiliki dukungan bahasa C ++ 14 penuh dan Standard C ++ Library memiliki dukungan C ++ 11 penuh dan dukungan penuh eksperimental C ++ 14. Dukungan C ++ 11 penuh telah dimungkinkan dengan mengadopsi Dual ABI, lihat https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html untuk lebih jelasnya.
  • C front-end sekarang secara default ke mode C11 dengan ekstensi GNU, yang mempengaruhi semantik kata kunci inline dan membawa beberapa perubahan lain yang terlihat pengguna, lihat https://gcc.gnu.org/gcc-5/porting_to.html untuk detail lebih lanjut.
  • GCC 5.1 berisi berbagai peningkatan pengoptimalan interprocedural, mis. pass IPA Identical Code Folding baru dan berbagai perbaikan KPP, mis. Penggabungan berbasis ODR dari jenis C ++, lihat http://hubicka.blogspot.cz/2015/04/GCC5-IPA-LTO-news.html untuk detail selengkapnya.
  • The GCC 5.1 Local Register Allocator sekarang berisi sub-pemetaan rematerialisasi, pada i? 86 / x86-64 dapat menggunakan kembali daftar keras PIC untuk meningkatkan kinerja kode posisi independen, ada laluan RA interprocedural yang sederhana dan berbagai register lainnya peningkatan alokasi ditambahkan.
  • GCC 5.1 menambahkan dukungan parsial untuk standar OpenACC, dukungan untuk pemuatan OpenMP 4.0 ke akselerator Xeon Phi mendatang Intel dan dukungan untuk pembongkaran OpenACC ke PTX. Sanitizer Perilaku Undefined di GCC telah diperpanjang dengan menambahkan berbagai pemeriksaan runtime baru. Perpustakaan GCC JIT eksperimental telah ditambahkan dalam GCC 5.1.

Apa yang baru di versi 4.8.4:

  • Pengoptimalan Pengoptimal Umum:
  • AddressSanitizer, pendeteksi kesalahan memori cepat, sekarang tersedia di ARM.
  • UndefinedBehaviorSanitizer (ubsan), detektor perilaku yang tidak terdefinisi cepat, telah ditambahkan dan dapat diaktifkan melalui -fsanitize = tidak terdefinisi. Berbagai perhitungan akan diinstrumentasi untuk mendeteksi perilaku tidak terdefinisi pada saat runtime. UndefinedBehaviorSanitizer saat ini tersedia untuk bahasa C dan C ++.
  • Peningkatan pengoptimalan tautan-waktu (LTO):
  • Penggabungan jenis ditulis ulang. Implementasi baru secara signifikan lebih cepat dan menggunakan lebih sedikit memori.
  • Algoritme partisi yang lebih baik menghasilkan lebih sedikit streaming selama waktu tautan.
  • Penghapusan awal metode virtual mengurangi ukuran file objek dan meningkatkan penggunaan memori tautan waktu dan waktu kompilasi.
  • Badan fungsi sekarang dimuat sesuai permintaan dan dirilis lebih awal untuk meningkatkan penggunaan memori secara keseluruhan pada waktu tautan.
  • Metode c ++ hidden keyed sekarang dapat dioptimalkan.
  • Ketika menggunakan plugin linker, kompilasi dengan opsi -flto sekarang menghasilkan file objek yang ramping (.o) yang hanya berisi representasi bahasa menengah untuk LTO. Gunakan -ffat-lto-objek untuk membuat file yang mengandung tambahan kode objek. Untuk menghasilkan pustaka statis yang cocok untuk pemrosesan LTO, gunakan gcc-ar dan gcc-ranlib; untuk menampilkan simbol dari file objek yang tipis menggunakan gcc-nm. (Ini mengharuskan ar, ranlib dan nm telah dikompilasi dengan dukungan plugin.)
  • Penggunaan memori yang dibuat Firefox dengan debug diaktifkan berkurang dari 15GB menjadi 3,5GB; waktu tautan dari 1700 detik hingga 350 detik.
  • Peningkatan optimalisasi antar-prosedural:
  • Modul analisis pewarisan tipe baru yang meningkatkan devirtualisasi. Devirtualization sekarang memperhitungkan ruang nama anonim dan kata kunci akhir C ++ 11.
  • Laluan devirtualisasi spekulatif baru (dikendalikan oleh -fdevirtualize-spekulatif.
  • Panggilan yang secara spekulatif dilakukan secara langsung dikembalikan ke tidak langsung di mana panggilan langsung tidak lebih murah.
  • Alias ​​lokal diperkenalkan untuk simbol yang diketahui semantik setara di pustaka bersama yang meningkatkan waktu penautan dinamis.
  • Masukan peningkatan pengoptimalan yang diarahkan:
  • Pembuatan program menggunakan fungsi inline C ++ sekarang lebih andal.
  • Pembuatan profil waktu baru menentukan urutan umum di mana fungsi dijalankan.
  • Pengalihan urutan fungsi baru (dikontrol oleh fungsi -freorder) secara signifikan mengurangi waktu startup aplikasi besar. Hingga dukungan binutils selesai, hanya efektif dengan pengoptimalan tautan waktu.
  • Penghapusan pencatatan dan pemanggilan nonaktif umpan balik tidak langsung sekarang menangani panggilan lintas-modul ketika pengoptimalan waktu tayang diaktifkan.
  • Penyempurnaan Bahasa Baru dan Bahasa khusus:
  • Versi 4.0 dari spesifikasi OpenMP sekarang didukung dalam C dan C ++ compiler dan dimulai dengan rilis 4.9.1 juga di kompiler Fortran. Opsi -fopenmp-simd baru dapat digunakan untuk mengaktifkan arahan SIMD OpenMP, sementara mengabaikan arahan OpenMP lainnya. Opsi -fsimd-cost-model = yang baru memungkinkan untuk menyesuaikan model biaya vektorisasi untuk loop yang dianotasikan dengan OpenMP dan Cilk Plus simd directives; -Wopenmp-simd memperingatkan ketika model biaya saat ini menimpa perintah direktif yang ditetapkan oleh pengguna.
  • Opsi -Wdate-time telah ditambahkan untuk kompiler C, C ++, dan Fortran, yang memperingatkan ketika __DATE__, __TIME__ atau __TIMESTAMP__ macro digunakan. Makro-makro tersebut mungkin mencegah kompilasi yang dapat dikompilasi dengan bit-bijaksana-identik.
  • Ada:
  • GNAT beralih ke Ada 2012 alih-alih Ada 2005 secara default.
  • Keluarga C:
  • Dukungan untuk pewarnaan diagnostik yang dipancarkan oleh GCC telah ditambahkan. The -fdiagnostics-color = auto akan mengaktifkannya ketika keluaran ke terminal, -fdiagnostics-color = selalu tanpa syarat. Variabel lingkungan GCC_COLORS dapat digunakan untuk menyesuaikan warna atau menonaktifkan pewarnaan. Jika variabel GCC_COLORS ada di lingkungan, defaultnya adalah -fdiagnostics-color = auto, jika tidak -fdiagnostics-color = tidak pernah.
  • Contoh keluaran diagnostik:
  • $ g ++ -fdiagnostics-color = always -S -Wall test.C
  • test.C: Dalam fungsi & lsquo; int foo () ':
  • test.C: 1: 14: peringatan: tidak ada pernyataan pengembalian dalam fungsi yang mengembalikan non-void [-Wetter-type]
  • int foo () {}
  • test.C: 2: 46: error: instantiation template kedalaman melebihi maksimum 900 (gunakan -ftemplate-depth = untuk meningkatkan maksimum) instantiating & lsquo; struct X '
  • template struct X {static const int value = X :: value; }; struct template X;
  • test.C: 2: 46: secara rekursif diperlukan dari & lsquo; const int X :: value '
  • test.C: 2: 46: diperlukan dari & lsquo; const int X :: value '
  • test.C: 2: 88: diperlukan dari sini
  • test.C: 2: 46: kesalahan: jenis tidak lengkap & lsquo; X 'digunakan pada penentu nama bertingkat
  • Dengan ivdep GSP #pragma baru, pengguna dapat menyatakan bahwa tidak ada ketergantungan loop-carry yang akan mencegah eksekusi berurutan dari iterasi berurutan menggunakan instruksi SIMD (instruksi tunggal beberapa data).
  • Dukungan untuk Cilk Plus telah ditambahkan dan dapat diaktifkan dengan opsi -fcilkplus. Cilk Plus adalah ekstensi untuk bahasa C dan C ++ untuk mendukung data dan tugas paralelisme. Implementasi ini mengikuti ABI versi 1.2; semua fitur kecuali _Cilk_for telah diterapkan.
  • Atom C11 ISO (penentu jenis _Atomic dan kualifikasi dan header) sekarang didukung.
  • Pilihan generik ISO C11 (_Generic keyword) sekarang didukung.
  • Penyimpanan thread-local ISO C11 (_Thread_local, mirip dengan GNU C __thread) sekarang didukung.
  • Dukungan ISO C11 sekarang berada pada tingkat kelengkapan yang sama dengan dukungan ISO C99: bug modulo yang secara substansial lengkap, pengenal tambahan (didukung kecuali untuk kasus-kasus sudut ketika -dikonversi-pengenal-digunakan), masalah floating-point (terutama tetapi tidak sepenuhnya berkaitan dengan fitur C99 opsional dari Lampiran F dan G) dan Lampiranes K opsional (antarmuka pengecekan batas) dan L (Analisis).
  • Ekstensi C __auto_type baru menyediakan subkumpulan fungsionalitas C ++ 11 auto di GNU C.
  • C ++:
  • Implementasi G ++ pada pengurangan tipe pengembalian C ++ 1y untuk fungsi normal telah diperbarui agar sesuai dengan N3638, proposal diterima di kertas kerja. Terutama, ia menambahkan decltype (auto) untuk mendapatkan semantik declare daripada argumen argumen deduksi semantik auto polos:
  • int & amp; f ();
  • auto i1 = f (); // int
  • decltype (auto) i2 = f (); // int & amp;
  • G ++ mendukung inisialisasi tangkapan lambda C ++ 1y:
  • [x = 42] {...};
  • Sebenarnya, mereka telah diterima sejak GCC 4.5, tetapi sekarang compiler tidak memperingatkan mereka dengan -std = c ++ 1y, dan mendukung inisialisasi yang dipasteurisasi dan brace-enclosed juga.
  • G ++ mendukung C ++ 1y variable length array. G ++ telah mendukung GNU / C99-style VLAs untuk waktu yang lama, tetapi sekarang juga mendukung initializers dan lambda capture berdasarkan referensi. Dalam C ++ 1y mode G ++ akan mengeluh tentang penggunaan VLA yang tidak diizinkan oleh standar draf, seperti membentuk penunjuk ke jenis VLA atau menerapkan sizeof ke variabel VLA. Perhatikan bahwa sekarang muncul bahwa VLA tidak akan menjadi bagian dari C ++ 14, tetapi akan menjadi bagian dari dokumen terpisah dan kemudian mungkin C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // lempar std :: bad_array_length jika n & lt; 3
  • [& amp; a] {untuk (int i: a) {cout

Apa yang baru di versi 4.9.1:

  • GCC 4.9.1 adalah rilis perbaikan bug dari cabang GCC 4.9 yang berisi perbaikan penting untuk regresi dan bug serius di GCC 4.9.0 dengan lebih dari 88 bug diperbaiki sejak rilis sebelumnya. Selain itu, rilis GCC 4.9.1 mendukung OpenMP 4.0 juga di Fortran, bukan hanya di C dan C ++.

Apa yang baru di versi 4.9.0:

  • Pengoptimalan Pengoptimal Umum:
  • AddressSanitizer, pendeteksi kesalahan memori cepat, sekarang tersedia di ARM.
  • UndefinedBehaviorSanitizer (ubsan), detektor perilaku yang tidak terdefinisi cepat, telah ditambahkan dan dapat diaktifkan melalui -fsanitize = tidak terdefinisi. Berbagai perhitungan akan diinstrumentasi untuk mendeteksi perilaku tidak terdefinisi pada saat runtime. UndefinedBehaviorSanitizer saat ini tersedia untuk bahasa C dan C ++.
  • Peningkatan pengoptimalan tautan-waktu (LTO):
  • Penggabungan jenis ditulis ulang. Implementasi baru secara signifikan lebih cepat dan menggunakan lebih sedikit memori.
  • Algoritme partisi yang lebih baik menghasilkan lebih sedikit streaming selama waktu tautan.
  • Penghapusan awal metode virtual mengurangi ukuran file objek dan meningkatkan penggunaan memori tautan waktu dan waktu kompilasi.
  • Badan fungsi sekarang dimuat sesuai permintaan dan dirilis lebih awal untuk meningkatkan penggunaan memori secara keseluruhan pada waktu tautan.
  • Metode c ++ hidden keyed sekarang dapat dioptimalkan.
  • Ketika menggunakan plugin linker, kompilasi dengan opsi -flto sekarang menghasilkan file objek yang ramping (.o) yang hanya berisi representasi bahasa menengah untuk LTO. Gunakan -ffat-lto-objek untuk membuat file yang mengandung tambahan kode objek. Untuk menghasilkan pustaka statis yang cocok untuk pemrosesan LTO, gunakan gcc-ar dan gcc-ranlib; untuk menampilkan simbol dari file objek yang tipis menggunakan gcc-nm. (Membutuhkan ar itu, ranlib dan nm telah dikompilasi dengan dukungan plugin.)
  • Penggunaan memori yang dibuat Firefox dengan debug diaktifkan berkurang dari 15GB menjadi 3,5GB; waktu tautan dari 1700 detik hingga 350 detik.
  • Peningkatan optimalisasi antar-prosedural:
  • Modul analisis pewarisan tipe baru yang meningkatkan devirtualisasi. Devirtualization sekarang memperhitungkan ruang nama anonim dan kata kunci akhir C ++ 11.
  • Laluan devirtualisasi spekulatif baru (dikendalikan oleh -fdevirtualize-spekulatif.
  • Panggilan yang secara spekulatif dilakukan secara langsung dikembalikan ke tidak langsung di mana panggilan langsung tidak lebih murah.
  • Alias ​​lokal diperkenalkan untuk simbol yang diketahui semantik setara di pustaka bersama yang meningkatkan waktu penautan dinamis.
  • Masukan peningkatan pengoptimalan yang diarahkan:
  • Pembuatan program menggunakan fungsi inline C ++ sekarang lebih andal.
  • Pembuatan profil waktu baru menentukan urutan umum di mana fungsi dijalankan.
  • Pengalihan urutan fungsi baru (dikontrol oleh fungsi -freorder) secara signifikan mengurangi waktu startup aplikasi besar. Hingga dukungan binutils selesai, hanya efektif dengan pengoptimalan tautan waktu.
  • Penghapusan pencatatan dan pemanggilan nonaktif umpan balik tidak langsung sekarang menangani panggilan lintas-modul ketika pengoptimalan waktu tayang diaktifkan.
  • Penyempurnaan Bahasa Baru dan Bahasa khusus:
  • Versi 4.0 dari spesifikasi OpenMP sekarang didukung untuk kompiler C dan C ++. Opsi -fopenmp-simd baru dapat digunakan untuk mengaktifkan arahan SIMD OpenMP, sementara mengabaikan arahan OpenMP lainnya. Opsi -fsimd-cost-model = yang baru memungkinkan untuk menyesuaikan model biaya vektorisasi untuk loop yang dianotasikan dengan OpenMP dan Cilk Plus simd directives; -Wopenmp-simd memperingatkan ketika costmodel saat ini menimpa perintah direktif yang ditetapkan oleh pengguna.
  • Opsi -Wdate-time telah ditambahkan untuk kompiler C, C ++, dan Fortran, yang memperingatkan ketika __DATE__, __TIME__ atau __TIMESTAMP__ macro digunakan. Makro-makro tersebut mungkin mencegah kompilasi yang dapat dikompilasi dengan bit-bijaksana-identik.
  • Ada:
  • GNAT beralih ke Ada 2012 alih-alih Ada 2005 secara default.
  • Keluarga C:
  • Dukungan untuk pewarnaan diagnostik yang dipancarkan oleh GCC telah ditambahkan. The -fdiagnostics-color = auto akan mengaktifkannya ketika keluaran ke terminal, -fdiagnostics-color = selalu tanpa syarat. Variabel lingkungan GCC_COLORS dapat digunakan untuk menyesuaikan warna atau menonaktifkan pewarnaan. Jika variabel GCC_COLORS ada di lingkungan, defaultnya adalah -fdiagnostics-color = auto, jika tidak -fdiagnostics-color = tidak pernah.
  • Contoh keluaran diagnostik:
  • $ g ++ -fdiagnostics-color = always -S -Wall test.C
  • test.C: Dalam fungsi & lsquo; int foo () ':
  • test.C: 1: 14: peringatan: tidak ada pernyataan pengembalian dalam fungsi yang mengembalikan non-void [-Wetter-type]
  • int foo () {}
  • test.C: 2: 46: error: instantiation template kedalaman melebihi maksimum 900 (gunakan -ftemplate-depth = untuk meningkatkan maksimum) instantiating & lsquo; struct X '
  • template struct X {static const int value = X :: value; }; struct template X;
  • test.C: 2: 46: secara rekursif diperlukan dari & lsquo; const int X :: value '
  • test.C: 2: 46: diperlukan dari & lsquo; const int X :: value '
  • test.C: 2: 88: diperlukan dari sini
  • test.C: 2: 46: kesalahan: jenis tidak lengkap & lsquo; X 'digunakan pada penentu nama bertingkat
  • Dengan ivdep GSP #pragma baru, pengguna dapat menyatakan bahwa tidak ada ketergantungan loop-carry yang akan mencegah eksekusi berurutan dari iterasi berurutan menggunakan instruksi SIMD (instruksi tunggal beberapa data).
  • Dukungan untuk Cilk Plus telah ditambahkan dan dapat diaktifkan dengan opsi -fcilkplus. Cilk Plus adalah ekstensi untuk bahasa C dan C ++ untuk mendukung data dan tugas paralelisme. Implementasi ini mengikuti ABI versi 1.2; semua fitur kecuali _Cilk_for telah diterapkan.
  • Atom C11 ISO (penentu jenis _Atomic dan kualifikasi dan header) sekarang didukung.
  • Pilihan generik ISO C11 (_Generic keyword) sekarang didukung.
  • Penyimpanan thread-local ISO C11 (_Thread_local, mirip dengan GNU C __thread) sekarang didukung.
  • Dukungan ISO C11 sekarang berada pada tingkat kelengkapan yang sama dengan dukungan ISO C99: bug modulo yang secara substansial lengkap, pengenal tambahan (didukung kecuali untuk kasus-kasus sudut ketika -dikonversi-pengenal-digunakan), masalah floating-point (terutama tetapi tidak sepenuhnya berkaitan dengan fitur C99 opsional dari Lampiran F dan G) dan Lampiranes K opsional (antarmuka pengecekan batas) dan L (Analisis).
  • Ekstensi C __auto_type baru menyediakan subkumpulan fungsionalitas C ++ 11 auto di GNU C.
  • C ++:
  • Implementasi G ++ pada pengurangan tipe pengembalian C ++ 1y untuk fungsi normal telah diperbarui agar sesuai dengan N3638, proposal diterima di kertas kerja. Terutama, ia menambahkan decltype (auto) untuk mendapatkan semantik declare daripada argumen argumen deduksi semantik auto polos:
  • int & amp; f ();
  • auto i1 = f (); // int
  • decltype (auto) i2 = f (); // int & amp;
  • G ++ mendukung inisialisasi tangkapan lambda C ++ 1y:
  • [x = 42] {...};
  • Sebenarnya, mereka telah diterima sejak GCC 4.5, tetapi sekarang compiler tidak memperingatkan mereka dengan -std = c ++ 1y, dan mendukung inisialisasi yang dipasteurisasi dan brace-enclosed juga.
  • G ++ mendukung C ++ 1y variable length array. G ++ telah mendukung GNU / C99-style VLAs untuk waktu yang lama, tetapi sekarang juga mendukung initializers dan lambda capture berdasarkan referensi. Dalam C ++ 1y mode G ++ akan mengeluh tentang penggunaan VLA yang tidak diizinkan oleh standar draf, seperti membentuk penunjuk ke jenis VLA atau menerapkan sizeof ke variabel VLA. Perhatikan bahwa sekarang muncul bahwa VLA tidak akan menjadi bagian dari C ++ 14, tetapi akan menjadi bagian dari dokumen terpisah dan kemudian mungkin C ++ 17.
  • void f (int n) {
  • int a [n] = {1, 2, 3}; // lempar std :: bad_array_length jika n & lt; 3
  • [& amp; a] {untuk (int i: a) {cout

Software yang serupa

Flex
Flex

12 Jul 17

Voodoo Compiler
Voodoo Compiler

20 Feb 15

runawk
runawk

19 Feb 15

Komentar untuk GCC

1 Komentar
  • 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
Tambahkan komentar
Aktifkan gambar!