Es ist wirklich nicht so eine "riesige Liste", wenn Sie daran interessiert sind, die C++ Änderungen zwischen den beiden.
4.0.0.8 ist nur ein Patch-Revision 4.0, deren Release Notes sind hier: http://gcc.gnu.org/gcc-4.0/changes.html
4.3.2 ist ein Patch Revision 4.3, deren Release Notes sind hier: http://gcc.gnu.org/gcc-4.3/changes.html
Wenn Sie schauen Bei den Unterschieden zwischen ihnen denke ich, dass die folgende Liste die wichtigsten Unterschiede zwischen GCC 4.0 und 4.3 enthält, die Sie wirklich interessieren würden.
GCC 4.3.2 hat (einschließlich Änderungen von GCC 4.1 und GCC 4.2):
Experimental support for the ISO C++0x standard (das ist ein Link)
long long
ist nun offiziell in C unterstützt ++ (obwohl es eine war Erweiterung in älteren GCC sowieso zur Verfügung gestellt)
- Vorlage
extern
wird unterstützt
- Rechtwinklige Klammern, wie Sie sie in
std::vector<std::vector<int>>
sehen, werden nun unterstützt (beachten Sie das Fehlen eines Leerzeichens zwischen den beiden >
am Ende der Deklaration).
- experimental support for Variadic Template Arguments
- Static assertions
- und einige andere
Mehr TR1 Bibliothek Unterstützung
<regex>
(gcc 4.3), <random>
(gcc 4.2) und <complex>
(gcc 4.2)
Die C++ - Sichtbarkeit wurde überarbeitet. (GCC 4.2)
Beschränkte visiblity aus Klassen Mitglieder von Funktionen zu den lokalen statischen propagiert und von Vorlagen und Vorlagen Argumente an Instanziierungen, sofern diese nicht erklärt Sichtbarkeit hat.
Das Sichtbarkeitsattribut für eine Klasse muss zwischen dem Klassenschlüssel und dem Namen stehen, nicht nach der schließenden Klammer.
Attribute sind jetzt für Enums und elaborated-type-specifiers erlaubt, die nur einen Typ deklarieren.
Mitglieder des anonymen Namespace sind jetzt lokal für eine bestimmte Übersetzungseinheit, zusammen mit allen anderen Deklarationen, die sie verwenden, obwohl sie immer noch so behandelt werden, dass sie eine externe Verknüpfung für Sprachsemantik haben.
ein nicht dokumentiertes Vorlage Verlängerung in GCC 4.2 entfernt wurde
Die (nicht dokumentiert) Verlängerung (wurde in 4.1 veraltet), die Vorlagen mit Standardargumente gestattet Vorlage Vorlage Parameter mit weniger Parametern gebunden zu sein wurde entfernt. Zum Beispiel:
template <template <typename> class C>
void f(C<double>) {}
template <typename T, typename U = int>
struct S {};
template void f(S<double>);
wird nicht mehr von G akzeptiert ++. Der Grund, warum dieser Code nicht akzeptiert wird, ist, dass S eine Vorlage mit zwei Parametern ist; daher kann es nicht an C gebunden werden, das nur einen Parameter hat.
Zusätzlich prüfen die porting to GCC 4.3 guide, wo einige wichtige Dinge ist, wie:
abwärtskompatibel/veraltet Header entfernt worden sind.
Meist bedeutet dies eine Reihe von Pre-Standard-Header entfernt wurde, wie <iostream.h>
(die Standard-<iostream>
verwenden), <hash_map.h>
(verwenden <tr1/unordered_map>
) <hashtable.h>
(verwenden <tr1/unordered_map>
oder <tr1/unordered_set>
je nach Bedarf) usw. Auch hier keine große Sache.
Strengere Durchsetzung von Standards
Zum Beispiel die Unterschrift auf main
‚s mit zwei Argumenten muss korrekt sein.
Keine doppelte Funktion Parameternamen
void func(int x, int x); // now an error
Und es wurden verschiedene Fehlerkorrekturen, sowie Änderungen, die ich glaube wirklich nicht beeinflussen, wie Sie den Wettbewerb Code (wie Entfernung schreiben würde/Hinzufügen von neuen Compiler-Flags), und Entfernen von Sachen wie die <?
und >?
Operatoren (jemals diese verwendet?).
Alles in allem glaube ich nicht, dass die Unterschiede zwischen den beiden Ihnen viel Kummer bereiten werden, wenn Sie Code für beide Compiler schreiben mussten.
Checkout im Detail -> http://gcc.gnu.org/releases.html – DumbCoder
@DumbCoder das ist eine riesige Liste.Ich wollte nur wissen, ob es irgendwelche großen Unterschiede b/w diese beiden gibt. Die meisten der auf Line-Programmierung Wettbewerbe wie SPOJ haben diese beiden Versionen von C++, wenn es keinen Unterschied b/w sie dann SPOJ hätte nur die letztere Version (dh neueste, wie SPOJ haben für andere Programmiersprachen Compiler) –