Hallo, leider haben auch die neuen Patches bei dem unten beschriebenen Problem nicht geholfen. Hab ich da einen Fehler? Oder ist da noch ein Bug in gcc? Wenn ja, gibt's da schon irgendwo ein Update, oder muss ich zunächst mal damit leben? Gruss Wilfrid
-----Ursprüngliche Nachricht----- Von: Eberhard Wilfrid ZFF TE-PR Gesendet: Montag, 15. September 2003 14:14 An: 'suse-programming@suse.com' Betreff: Noch eine Frage zu gcc 3.3
Hallo,
sorry falls ich heute nerve, aber mir ist da nochmal was zu dem gcc 3.3 compiler nicht klar. Diesmal geht es um die Initialisierung von Strukturen:
Folgendes Beispiel habe ich bisher (alter gcc Compiler) übersetzen können:
struct sBeispielstruct { double a; double b; double c; double d; };
sBeispielstruct Beispielstruct = { {0}, {0.85}, {0.1763}, {0.0225} };
Mit dem gcc 3.3 bekomme ich jetzt folgende Fehlermeldung: brace-enclosed initializer used to initalized double
Mir ist jetzt nich so ganz klar wieso er hier einen Error ausspuckt. OK die Klammern sind nicht unbedingt notwendig, aber verstossen Sie wirklich gegen Ansi C? Ich hab ein Buch (das berühmte von der Uni Hannover :-)) wo zumindest die Klammern auch gesetz werden.
Die andere Frage ist, kann ich den Compiler irgendwie dazu überreden, dass er die Klammern doch nimmt (ich hab nämlich einige, viel groessere Strukte)?
Danke mal wieder.
Gruss
Wilfrid
Hi, On Mon, 15 Sep 2003, Eberhard Wilfrid ZFF TE-PR wrote:
Hab ich da einen Fehler?
Ja.
Mit dem gcc 3.3 bekomme ich jetzt folgende Fehlermeldung: brace-enclosed initializer used to initalized double
Naja, die Fehlermeldung sollte eindeutig sein.
Mir ist jetzt nich so ganz klar wieso er hier einen Error ausspuckt. OK die Klammern sind nicht unbedingt notwendig, aber verstossen Sie wirklich gegen Ansi C?
Ja (ISO-C++ bitte. Es ist ein internationaler, nicht amerikanischer Standard).
Ich hab ein Buch (das ber�hmte von der Uni Hannover :-)) wo zumindest die Klammern auch gesetz werden.
Verbrenne es.
Die andere Frage ist, kann ich den Compiler irgendwie dazu �berreden, dass er die Klammern doch nimmt (ich hab n�mlich einige, viel groessere Strukte)?
Leider nein. Skalare in Aggregates werden mit einem einfachen Initializer initialisiert. Die einzige Ausnahme sind Skalare selbst. D.h. dies ist erlaubt: int x = { 1 }; dies nicht: struct {int i} x = { { 1 } }; Ciao, Micha.
participants (2)
-
Eberhard Wilfrid ZFF TE-PR
-
Michael Matz