edv:prg:c:datatyp:definition_von_neuen_datentypen
Definition von neuen Datentypen
Für die Definition von Datentypen mittels typedef gibt es zwei Verianten:
- Einen neuen Namen (s.g. Aliasnamen) für einen bereits existierenden Datentyp vergeben:
typedef existierender_typname neuer_aliasname;
Beispiel:
typedef unsigned int uint;
- Eine Struktur zu einem neuen (aggregierten) Datentyp erklären:
typedef struct { char * nachname, char * vorname, int alter; } person;
Beispiel für die Verwendung der neu definierten Datentypen:
uint counter; person verwalter; person die_eigentuemer[100];
Den o.g. Typ "uint" könnte man auch wie folgt definieren:
#define uint unsigned int
Wichtig: Darurch würde man im wesentlichen den gleichen Effekt erreichen. Nur bei Verwendung von "typedef" hat der Compiler bessere Prüfmöglichkeiten:
- Bei einer Mehrfachdefinition durch "#define" würde der Compiler lediglich eine Warnung ausgeben und die jeweils neuere Definition anwenden.
- Bei einer Mehrfachdefinition durch "typedef" würde der Compiler eine Fehlermeldung ausgeben und das Kompilieren abbrechen.
Vorsicht bei den anonymen Typen! Folgendes Konstrukt:
typedef struct {} *connhandle_t;
Der Microsoft VisualStudio Compiler beschwert sich nicht und erlaubt den neu definierten Typ "connhandle_t" zu verwenden. Der GNU Compiler kompiliert es zwar auch, beschwert sich jedoch beim Linken über nicht aufgelöste Referenzen.
typedef struct {} __connhandle_t, *connhandle_t;
Stand: 15.02.2016
— : Jürgen Kreick
EOF
edv/prg/c/datatyp/definition_von_neuen_datentypen.txt · Zuletzt geändert: 2020/01/11 01:23 von 127.0.0.1