typedef ist in den Programmiersprachen C und C++ ein Schlüsselwort, das zur Erstellung eines Alias für einen Datentyp verwendet wird.
Ein einfaches Beispiel, bei dem ein neuer Typ für ganzzahlige Geschwindigkeiten festgelegt wird, wäre zum vordefinierten Typ int
identisch:
typedef int km_pro_Stunde;
Häufiger wird typedef
für kompliziertere Definitionen verwendet:
Es ist möglich und üblich, von abgeleiteten Typen weitere Ableitungen zu definieren:
int array[10][20]; // Array mit 10 Elementen, wobei jedes Element ein Array von 20 »int« ist.
int *p [10]; // Array mit 10 Elementen, wobei jedes Element ein »int *« (=Zeiger auf »int«) ist.
int (*q)[10]; // Zeiger auf ein Array mit 10 »int«-Elementen.
int (*f)(int *); // Zeiger auf eine Funktion, die einen »int *«-Parameter hat und ein »int« zurückgibt
Dies kann schnell zu komplexen und unübersichtlichen Deklarationen führen. Über eine typedef-Deklaration ist es möglich, für einen (möglicherweise zu komplexen) Datentyp einen einfachen Namen zu vergeben:
void *(*get_cb(int))(void *); // Unübersichtlich!
// Besser:
typedef void *(*callback)(void *); // Typedef: »callback« ist ein Zeiger auf eine Funktion,
// die einen »void*«-Parameter hat und ein »void*« zurückgibt
callback get_cb(int); // Übersichtlicher: »get_cb« hat einen »int«-Parameter und gibt einen
// »callback«-Funktionszeiger zurück
Literatur
- Brian Kernighan, Dennis Ritchie: The C Programming Language. 2. Auflage. Prentice Hall, Englewood Cliffs NJ 1988, ISBN 0-13-110362-8, S. 146–147 (deutsche Übersetzung: Brian Kernighan, Dennis Ritchie: Programmieren in C. Mit dem C-Reference Manual in deutscher Sprache. 2. Auflage. Hanser, München / Wien 1990, ISBN 3-446-15497-3).
- Robert Klima, Siegfried Selberherr: Programmieren in C. 3. Auflage. Springer, Wien 2010, ISBN 978-3-7091-0392-0, S. 194–195.
- Jürgen Wolf: C von A bis Z. Das umfassende Handbuch. 3. aktualisierte und erweiterte Auflage. 2009, 4., korrigierter Nachdruck: Rheinwerk, Bonn 2015, ISBN 978-3-8362-1411-7.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.