Benutzer-Werkzeuge

Webseiten-Werkzeuge


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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki