Ich darf für meine Aufgabe nämlich leider kein C++ verwenden

Was spricht gegenKerli hat geschrieben:Weiß jemand von euch wie ich in C eine Vorwärtsdeklaration eines Unions erstellen kann?
Code: Alles auswählen
union bla;
Der KompilerXin hat geschrieben:Was spricht gegenKerli hat geschrieben:Weiß jemand von euch wie ich in C eine Vorwärtsdeklaration eines Unions erstellen kann??Code: Alles auswählen
union bla;
Code: Alles auswählen
ex2.c:100: Fehler: expected specifier-qualifier-list before »Primitive«
Code: Alles auswählen
Primitive *next_element_;
Code: Alles auswählen
union Primitive;
Glaube ich nichtKerli hat geschrieben:Der KompilerXin hat geschrieben:Was spricht gegenKerli hat geschrieben:Weiß jemand von euch wie ich in C eine Vorwärtsdeklaration eines Unions erstellen kann??Code: Alles auswählen
union bla;
Da würde ich als C-Compiler auch meckern.Kerli hat geschrieben:Die dazugehörige Zeile schaut so aus:Code: Alles auswählen
ex2.c:100: Fehler: expected specifier-qualifier-list before »Primitive«
Code: Alles auswählen
Primitive *next_element_;
Code: Alles auswählen
union Primitive * next_element_; // <- blöde Namensgebung
Ohne 'union' vorne dran. Das ist ein Member eines Union.Xin hat geschrieben:Da würde ich als C-Compiler auch meckern.
Code: Alles auswählen
union Primitive * next_element_; // <- blöde Namensgebung
Code: Alles auswählen
typedef union Primitive Primitive;
typedef struct
{
int type_;
char *id_;
Primitive *next_element_;
Point start_;
Point end_;
} Line;
// ...
union Primitive
{
struct
{
int type_;
char *id_;
Primitive *next_element_;
};
Line line_;
Rect rect_;
Circle circle_;
Text text_;
Polygon polygon_;
};
??Kerli hat geschrieben:Ohne 'union' vorne dran. Das ist ein Member eines Union.
Code: Alles auswählen
union Primitive;
typedef struct
{
int type_;
char *id_;
union Primitive *next_element_;
Point start_;
Point end_;
} Line;
// ...
union Primitive
{
struct
{
int type_;
char *id_;
union Primitive *next_element_;
};
Line line_;
Rect rect_;
Circle circle_;
Text text_;
Polygon polygon_;
};
Das hat sich aufXin hat geschrieben: Kerli hat geschrieben:Ohne 'union' vorne dran. Das ist ein Member eines Union.
??
bezogen.Xin hat geschrieben:union Primitive * next_element_; // <- blöde Namensgebung
Ich mag typedef eigentlich auch nicht, aber in C ist das so nicht möglich.Xin hat geschrieben:sollte genauso gehen. Ich persönlich mag Typedef nicht.Code: Alles auswählen
union Primitive; typedef struct { int type_; char *id_; union Primitive *next_element_; Point start_; Point end_; } Line; // ... union Primitive { struct { int type_; char *id_; union Primitive *next_element_; }; Line line_; Rect rect_; Circle circle_; Text text_; Polygon polygon_; };
Du willst mir sagen, dassKerli hat geschrieben:Ich mag typedef eigentlich auch nicht, aber in C ist das so nicht möglich.Xin hat geschrieben:sollte genauso gehen. Ich persönlich mag Typedef nicht.
Code: Alles auswählen
union bla;
union bla * foo;
Nein ich will sagen, dassXin hat geschrieben:Du willst mir sagen, dass
Vom Compiler nicht akzeptiert wird?Code: Alles auswählen
union bla; union bla * foo;
Code: Alles auswählen
union bla;
union bla2
{
bla * p;
};
Das ist klar, weil das nicht C entspricht.Kerli hat geschrieben:Er erlaubt anscheinend keine Member die nicht mit typedef definiert worden sind.
Code: Alles auswählen
struct bla;
struct bla2
{
bla * p;
};