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.