Eine Struktur dient dazu, mehrere funktional zusammengehörende Variablen
zusammenzufassen.
Das ist schon dann sinnvoll, wenn man diese Variablen einer Funktion
übergeben möchte:
1 | typedef struct
|
2 | {
|
3 | CLK_STATES clkstate;
|
4 | int idlecnt;
|
5 | unsigned int cpucycles;
|
6 | unsigned int last_CP0;
|
7 | int idlecntpersec;
|
8 | } CLKDATA;
|
9 |
|
10 | // a:
|
11 |
|
12 | void meine_funktion_a(CLK_STATES clkstate, int idlecnt, unsigned int cpucycles, unsigned int last_CP0, int idlecntpersec);
|
13 |
|
14 | // b:
|
15 |
|
16 | void meine_funktion_b(CLKDATA clkdata);
|
Du siehst, daß die Parameterliste von meine_funktion_a unanständig lang
wird.
Das ganze geht übrigend auch ohne typedef:
1 | struct CLKDATA
|
2 | {
|
3 | CLK_STATES clkstate;
|
4 | int idlecnt;
|
5 | unsigned int cpucycles;
|
6 | unsigned int last_CP0;
|
7 | int idlecntpersec;
|
8 | };
|
9 |
|
10 | // a:
|
11 |
|
12 | void meine_funktion_a(CLK_STATES clkstate, int idlecnt, unsigned int cpucycles, unsigned int last_CP0, int idlecntpersec);
|
13 |
|
14 | // b:
|
15 |
|
16 | void meine_funktion_b(struct CLKDATA clkdata);
|
Durch das typedef spart man sich das Hinschreiben des Schlüsselworts
"struct" und man kann die Typdefinition syntaktisch genauso verwenden,
wie einen anderen Datentyp.
Du plenkst.