2010-12-30 24 views
6

g ++ 4.0.0.8 ve g ++ 4.3.2 arasındaki fark nedir? Bu iki program, çeşitli programlama yarışmalarında kullandığım en yaygın C++ derleyicileridir.g ++ sürüm 4.0.0.8 ve 4.3.2 arasındaki farklar nelerdir?

Google'a denedim, ancak hiçbir şey bulamadım.

+5

Detaylı giriş -> http://gcc.gnu.org/releases.html – DumbCoder

+1

@DumbCoder bu çok büyük bir liste. Ben sadece bu iki büyük farklılıklar olup olmadığını bilmek istedim. SPOJ gibi hat programlama yarışmalar b herhangi bir fark yoktur olmasaydı/onları o SPOJ sadece ikinci versiyonunu olurdu w (yani son birini SPOJ diğer programlama dili derleyicileri için olduğu gibi), C++ bu iki versiyonu var –

cevap

13

Bu gerçekten 'büyük liste' değil, ikisi arasında C++ değişiklikleri ile ilgileniyorsunuz. http://gcc.gnu.org/gcc-4.3/changes.html

Bakarsanız: http://gcc.gnu.org/gcc-4.0/changes.html

4.3.2 sürüm notları burada 4.3'lük bir yama revizyon şöyledir:

4.0.0.8

olan sürüm notları burada 4.0'lık bir yama revizyon olduğu aralarındaki farklar göz önüne alındığında, aşağıdaki listede gerçekten önemsediğiniz GCC 4.0 ve 4.3 arasındaki en önemli farkları kapsamaktadır.

GCC 4.3.2 (GCC 4.1 gelen değişiklikleri ve GCC 4.2 dahil) sahiptir:

Experimental support for the ISO C++0x standard (yani bir bağlantı) bir olsa

  • long long artık resmen (C++ desteklenmektedir (zaten eski GCC'de sağlanan uzantı)
  • Şablon extern desteklenmektedir
  • std::vector<std::vector<int>>'da göründüğünüz gibi sağ açılı ayraçlar artık destekleniyor (bildirimin sonunda iki > arasındaki boşluk eksikliğine dikkat edin).
  • experimental support for Variadic Template Arguments
  • Static assertions
  • ve bazıları

fazla TR1 kütüphane desteği

  • <regex> (gcc 4.3), <random> (gcc 4.2) ve <complex> (gcc 4.2)
+

C++ görünürlük yönetimi elden geçirildi. (GCC 4.2)

Kısıtlı görünürlük yerel Statiğe fonksiyonlardan, üyelerine sınıflardan yayılır ve şablonları ve şablon argümanları gelen örnekleriyle ilgisi, ikincisi açıkça beyan sürece görünürlük edilir.

Bir sınıfın görünürlük özelliği, kapanış ayracından sonra değil, sınıf anahtarıyla ad arasında olmalıdır.

Artık, yalnızca bir türü bildiren enumlar ve ayrıntılı tür belirticiler için özellikler kullanılabilir.

Anonim ad alanı üyeleri, artık dil anlamlandırmaları için dış bağlantıya sahip oldukları halde, bunları kullanan diğer beyanlarla birlikte belirli bir çeviri birimine yereldir.

bir belgesiz şablon uzantısı

GCC 4.2 çıkarıldı varsayılan argümanlarla şablonları izin

(belgesiz) uzantısı az parametrelerle şablon şablon parametrelerine bağlı olmayı (4.1 kullanımdan kaldırıldı) Kaldırıldı. Örneğin:

template <template <typename> class C> 
void f(C<double>) {} 

template <typename T, typename U = int> 
struct S {}; 

template void f(S<double>); 

artık ++ G tarafından kabul edilir. Bu kodun kabul edilmemesinin nedeni S'nin iki parametreli bir şablon olmasıdır; bu nedenle, sadece bir parametresi olan C'ye bağlı olamaz.


Ayrıca, kontrol porting to GCC 4.3 guide, nerede bazı önemli şeyler gibi geçerli:

Geriye uyumlu/kaldırılan başlıklar kaldırılmıştır.

Çoğunlukla bu standart öncesi başlıkların bir grup <hash_map.h><hashtable.h> Yine, vb değil (<tr1/unordered_map> veya <tr1/unordered_set> ihtiyaçlarına bağlı olarak kullanım) (<tr1/unordered_map> kullanın), (standart <iostream> kullanın) <iostream.h> gibi kaldırılmış demektir büyük anlaşma. standartlara

Örneğin ait

Sıkı uygulanması, main 'ın iki argüman formunda imzası doğru olmalıdır.

yok yinelenen fonksiyon parametre adları

void func(int x, int x); // now an error 

Ve çeşitli hata düzeltmeleri yanı sıra değişiklikler olmuştur Gerçekten kaldırılması gibi (yarışma kod yazmak istiyorum nasıl etkiler düşünmüyor musunuz/Yeni derleyici bayraklarının eklenmesi) ve <? ve >? operatörleri gibi öğelerin kaldırılması (hiç kullanılmamış mı?).

Her iki dergi için de kod yazmak zorunda kalsaydınız, ikisi arasındaki farkların sizi çok üzeceklerini sanmıyorum.

0

İki farklı g ++ sürümü arasındaki farkı mı merak ediyorsunuz? GNU C++ derleyicilerinin iki yaygın versiyonu. Farklı Linux sürümleri, onunla birlikte gönderilen g ++ sürümüne sahip olabilir. Benim mevcut CentOS 5.5 gibi onunla g ++ 4.1.2 var.

Özellikle ilgili ayrıntılar için, yorumlarınızdaki bağlantıyı kontrol edin.

0

4.3.2 daha yeni olduğundan 4.0.0.8'den beri, daha standart olarak uyumludur. Ayrıntılar için dökümantasyonu kontrol etmeli ve değişiklikleri serbest bırakmalısınız.

İlgili konular