Simon K. wrote:
> Gut, da hast du auch wieder Recht.
>
> Karl Heinz meint also zum Beispiel folgendes:
>
1 | > typedef array_t uint8_t[4];
|
2 | >
|
Äh, nein.
Nimm mal das typedef weg.
Dann steht da
array_t uint8_t[4];
Das ist aber keine gültige Variablendefinition, da array_t
kein Datentyp ist.
Anders rum wird ein Schuh draus.
Wie definierst du ein Array von 4 uint8_t?
uint8_t variable[4];
Anstatt 'variable' nimm jetzt einen anderen Namen, der dich
mehr an einen Datentyp erinnert.
uint8_t array_t[4];
das definiert array_t als Array von 4 Stück uint8_t.
Jetzt setzt du einfach einen typedef davor
typedef uint8_t array_t[4];
wodurch array_t (das was vorher der Variablenname war), zum Namen
des neuen Datentyps wird.
Selbiges bei Funktionspointern.
void (*pFunc) ( char );
pFunc ist ein Pointer auf eine Funktion, die einen char nimmt
und nichts liefert.
typedef void (*pFunc) ( char );
pFunc ist der Name eines Datentyps, der ein Funktionszeiger
ist, wobei die Funktion einen char annimmt und nichts liefert.