Typedef
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, identisch zum vordefinierten Typ int.
typedef int km_pro_Stunde;
Häufiger wird typdef 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 978-3-446-15497-1)
- 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 2015, Rheinwerk, Bonn 2015, ISBN 978-3-8362-1411-7.
Einzelnachweise
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.