Stilfrage? Wie "struct" deklarieren?

Kachelator

Peter Jerz
Nun habe ich auch mal eine Frage, und zwar an die Fortgeschritteneren.
Besteht irgendein wichtiger (funktionaler) Unterschied zwischen folgenden Deklarations-Versionen von structs?
Code:
// 1.
struct my_struct_t
{
  int type;
  int length;
};

// 2.
typedef struct 
{
  int type;
  int length;
} my_struct_t;
Ich bevorzuge die erste Version (da analog zu class und kürzer) und habe die zweite bisher nie benötigt. In welchen Fällen ist Version 2 sinnvoll bzw. nötig? Vielen Dank schon mal für eure Antworten!
 
Hallo Kachelator!

Code:
struct XXX
{
 int a;
 int b;
};

struct XXX a;

Ist noch der alte C-Stil, wo Strukturen und die Datentypen getrennt wurden -> Struktur-Instanzen können nur mit vorangestelltem 'struct' deklariert werden.

Bei der folgenden Variante, wird die Struktur als neuer Datentyp eingeführt und kann wie jeder andere Datentyp ohne 'struct' verwendet werden:
Code:
typedef struct XXX
{
 int a;
 int b;
} TYPE_XXX;

TYPE_XXX a;

Es ist programmtechnisch gesehen nur Kosmetik, ob man die eine oder andere Schreibweise benutzt, weil die zweite Möglichkeit eigentlich nichts anderes ist als eine Präprozessoranweisung in der Art
Code:
#define TYPE_XXX struct XXX
!

Aufpassen muss man aber bei der folgenden Anweisung:
Code:
struct XXX
{
 int a;
 int b;
};

XXX a;

Dies funktioniert nämlich nur unter C++ nicht unter C, da erst mit C++ die automatische Typisierung eingeführt wurde! (Analog zu der class-Anweisung, wie von dir schon angedeutet.)
Wer also reines C auch mit C++-Compiler programmieren will, sollte die beiden oberen Möglichkeiten nutzen!

Hoffe dir geholfen zu haben,
Johannes
 
Zurück