zu vor deklarierte Strukturen nich erkannt
-
dann steck den funktionsprototypen eben unter die struturdefinitionen.
-
hab ich jetzt auch versucht
macht aber keinen Unterschied
er findet die ganzen Strukturen immernoch nichtkomisch...
-
in C++ ist das irrelevant, aber in C++ gibt es einen Unterschied zwischen "struct xyz" und "xyz" - also entweder du verwendest den kompletten Typnamen oder du nutzt typedef's:
//Möglichkeit a: struct vertex2d; struct object2d; struct vertex2d middle(struct object2d o); ... //Möglichkeit b: typedef struct _vert vertex2d; typedef struct _obj object2d; vertex2d middle(object2d); struct _vert {...}; struct _obj {...};
-
oder:
//Prototypen typedef struct _vertex2d { double x; double y; } vertex2d; typedef struct _object2d { vertex2d *v; int length; char color; } object2d; vertex2d middle(object2d o); //parse error before vertex2d, parse error before object2d //Funktionskörper vertex2d middle(object2d o) { //irrelevant }
-
http://c-faq.com/struct/typedef.html
Edit: Ich bin heute einfach langsam...
-
wusst ich noch gar nich
werd ich gleich mal ausprobieren
is weil ich meißtens C++ geproggt hab
-
also bei der typedef Mehtode meckert er:
warning: useless keyword or type name in empty declaration
(in der Zeile in der ich typedef struct ... aufrufe)und wenn ich immer struct davorschreibe (was ich aber eigentlich lieber bleiben lassen will)
meint er bei
struct vertex2d middle(struct object2d o);
warning: parameter has incomplete type
-
Zeig doch mal deinen jetzigen Code. Und welchen Compiler nutzt du?
-
ich benutz dev-c++, also mingw
so sieht das ganze aus:typedef struct vertex2d; typedef struct object2d; vertex2d middle(object2d o); struct vertex2d { double x; double y; }; struct object2d { vertex2d *v; int length; char color; }; vertex2d middle(object2d) { }
-
A) Wenn Du C++ compilierst brauchst Du kein typedef.
Forward-Deklaration funktioniert nur solange über den Typ nichts genaueres bekannt sein muss als der Name.
struct vertex2d; struct object2d; vertex2d middle(object2d o); struct vertex2d { double x; double y; }; struct object2d { vertex2d *v; int length; char color; }; vertex2d middle(object2d) { }