Gibt es einen Unterschied zwischen struct NAME {}; und typedef struct {} NAME?
-
Guten Tag,
gibt es eigendlich einen Unterschied zwischenstruct NAME { char test; }
und
typedef struct { char test; } NAME
danke im voraus
-
struct NAME { char test; }; // <- Semikolon vergessen!
Wenn man sowas in C verwendet, dann muss man die Variablen immer so deklarieren:
struct NAME var;
Mit diesem Konstrukt:
typedef struct { char test; } NAME; // <. Semikolon vergessen!
Kann man in C das auch anders machen:
NAME var;
Dank dem
typedef
muss man also nicht mehr immer dasstruct
hinschreiben.In C++ gibt es diesen Unterschied nicht und es ist zu empfehlen, das erstere zu nutzen. Also das hier:
struct NAME { char test; };
Grüssli
-
theoretisch nicht
aber typedef struct ist C
früher musste man folgendes schreiben:typedef struct { int a; float b; } foo; int main() { struct foo test; //glaube ich }
ausserdem kommt Visual C++ nicht ganz mit der alten C möglichkeit klar weil es im klassenfenster einen default namen anzeigt da es den namen nicht kennt
in c++ ist das mit den structs ja so:
struct foo { int a; } Var1, Var2; int main() { Var1.a = 5; //erstes foo objekt Var2.a = 7; //zweites foo objekt foo test; //drittes foo objekt test.a = 1; }
-
Skym0sh0 schrieb:
theoretisch nicht
aber typedef struct ist C
früher musste man folgendes schreiben:typedef struct { int a; float b; } foo; int main() { struct foo test; //glaube ich }
Falsch.
Wenn dann "foo test;", da du die Struktur ja als einen
Typ definierst.
-
~feraL schrieb:
Skym0sh0 schrieb:
int main() { struct foo test; //glaube ich }
Falsch.
Wenn dann "foo test;", da du die Struktur ja als einen
Typ definierst.Interessant, denn ich habe vor Kurzem genau das gelesen. Also daß man das struct bei der Deklaration in C mit angeben muss...
-
XHansWurstX schrieb:
Interessant, denn ich habe vor Kurzem genau das gelesen. Also daß man das struct bei der Deklaration in C mit angeben muss...
Dravere hat ja bereits alles beschrieben, wo liegt also das Problem?
-
sorry, habe mich von dem "falsch" verwirren lassen