• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

g++ 4.1: "extra qualification on member"

abgdf

Guru
Hi,

g++ 4.1 (bzw. gcc 4.1) meckert anders als die Vorversionen über "extra qualification on member" im Code.
Dadurch können sehr viele Programme nicht mehr ohne weiteres (patch) kompiliert werden:

http://www.google.de/search?hl=de&q=g%2B%2B+4.1+extra+qualification&btnG=Suche&meta=

Auch z.B. hier

http://www.linux-club.de/viewtopic.php?t=64606

Gibt es eine Compileroption, die g++ 4.1 dazu bewegt, sich wie eine Vorversion zu verhalten und den Code wie früher zu akzeptieren ?

Viele Grüße
 
Generell gilt: Wenn es in einer neueren Version nicht [mehr] geht, dann wird der C/C++-Standard korrekter durchgesetzt. Mit anderen Worten: Wer "TYPE A::B()" in einer class A{} schreibt, ist selber schuld. (Korrekt ist nämlich "TYPE B()")
 
OP
A

abgdf

Guru
Ja, stimmt schon, aber nun gibt's 'ne ganze Menge Programme, die dann nicht mehr kompiliert werden können.
Ich meine, g++ könnte auf die bestehende Software durch Abwärtskompatibilität etwas mehr Rücksicht nehmen.

Viele Grüße

Edit: Ok, man kann den C++-Sprachstil von g++ mit der "-std="-Option ändern.
In Makefiles sollte das die Zeile

CXXFLAGS =

sein, der wohl ein zusätzliches "-std=gnu++98" anzufügen wäre. Kann's leider nicht testen.

Viele Grüße
 
abgdf schrieb:
Ich meine, g++ könnte auf die bestehende Software durch Abwärtskompatibilität etwas mehr Rücksicht nehmen.
Genau das passiert ja schon:

Alles, was Version X des GCC als "Error" ablehnt, war in Version X-1 mindestens "Warning".

Aber die "Warnings" liest ja keiner, daher das Problem.
 
Wie ich schon sagte, manche Leute können einfach nicht programmieren. Zum Teil sind auch C/C++-Buchautoren schuld, die falschen Mist vermitteln.
 
OP
A

abgdf

Guru
Soso, das betrifft dann wohl auch die Audacity-Entwickler:

http://www.audacity-forum.de/thread/1552

Dafür, daß die nicht programmieren können sollen, ist ihre Anwendung aber erstaunlich gut gelungen.

Gruß
 
Man kann ja nicht alles falschmachen, sonst kann man es ja gar nicht mehr kompilieren. Ausserdem ist das beschriebene Problem ja nicht ein semantisches sondern ein syntaktisches.
 
abgdf schrieb:
Dafür, daß die nicht programmieren können sollen, ist ihre Anwendung aber erstaunlich gut gelungen.
Dass die audacity-Entwickler nicht programmieren können, hat ja kein Mensch jemals behauptet.

Es ist nun mal einfach so, dass das letzte Release von audacity ziemlich alt ist. Damals gab es noch keinen GCC 4.x, sondern 3.x, dieser hat den falschen Code noch geschluckt.

Seitdem gab es nicht nur ein, sondern gleich mehrere neue GCC-Releases und deshalb geht es halt einfach nicht mehr, die Änderungen am GCC wurden aber nicht ohne Grund vorgenommen und kamen nicht ohne Vorwarnung.

Dass in dem verlinkten Thread auch das Kompilieren der CVS-Version fehlschlägt, hat nichts mit dem GCC zu tun, da scheitert ja bereits der CVS-Checkout.
 
Oben