Typedef struct und struct

Hallo!
Gibt es einen Unterschied zwischen z.B.
typedef struct {int a,b,c,d;} s;
und
struct s{int a,b,c,d;}
?
Wird vielleicht typedef x von Präprozessor ausgeführt, während x auch im Kompilat Code erzeugt?

Danke, Hans

Hallo!
Gibt es einen Unterschied zwischen z.B.
typedef struct {int a,b,c,d;} s;
und
struct s{int a,b,c,d;}
?
Wird vielleicht typedef x von Präprozessor ausgeführt, während
x auch im Kompilat Code erzeugt?

Nein, denn beide sind Typdeklarationen:

 C C++
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
 typedef struct {int a,b,c;} s1; OK OK

 struct s2 {int a,b,c;} ; OK
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_

Grüße

CMБ

C C++
______________________________________________________________
typedef struct {int a,b,c;} s1; OK OK

struct s2 {int a,b,c;} ;
OK
______________________________________________________________

Grüße

CMБ

Sorry,
aber das stimmt so nicht ganz.
Du kannst auch in C beide Varianten benutzen.
Der Unterschied entsteht darin, wie du hinterher die strukturen benutzen kannst.

Wenn du kein typdef benutzt, musst du beim deklarieren einer Variablen immer schreiben:
struct s2 varName1;
mit typedef kannst du so tun als wenn du einen 'normalen Variablentyp hast und schreibst nur noch:
s2 varName1;
und das ist natürlich weniger zu schreiben…

Gruß SabSt

Hallo

C C++
______________________________________________________________
typedef struct {int a,b,c;} s1; OK OK

struct s2 {int a,b,c;} ;
OK
______________________________________________________________

aber das stimmt so nicht ganz.
Du kannst auch in C beide Varianten benutzen.
Der Unterschied entsteht darin, wie du hinterher die
strukturen benutzen kannst.
Wenn du kein typdef benutzt, musst du beim deklarieren einer
Variablen immer schreiben:
struct s2 varName1;
mit typedef kannst du so tun als wenn du einen 'normalen
Variablentyp hast und schreibst nur noch:
s2 varName1;
und das ist natürlich weniger zu schreiben…

Das ist ja alles schön und gut, nur war das ja nicht
vom OP gefragt worden.

Und da Du ja so weit ausholst, dürftest Du eine
weitere Möglichkeit auch nicht vergessen:

 ...
 typedef struct s2 {int a,b,c,d;} s1;

 s1 A; // 

Grüße

CMБ