Als Programmierer kommt man regelmäßig in die Situation, dass einige Typennamen extrem lang und unübersichtlich werden. Dies gilt vor allem für Typen, deren Definition aus mehreren Worten bestehen. Niemand schreibt gern "unsigned long long int". Mit Hilfe eines Typen-Alias können wir dieser Definition einen neuen Namen geben und z.B. als "uint64_t" ansprechen. Für Strukturen, Unions und Enums lässt sich so außerdem der lästige "struct"/"union"/"enum"-Prefix entfernen. 

Ein Alias ist dabei tatsächlich nur ein Alias. Die tatsächlichen Typen bleiben unverändert.

Syntax: typedef <Ausgangsdatentyp> <Alias>

#include <stdio.h>

typedef int blubberwasser_t;
typedef double floatingpoint_t;

int main()
{
    blubberwasser_t b = 42;
    floatingpoint_t f = 13.37;

    printf("%d, %f\n", b, f);

    return 0;
}

Ein Typen-Alias auf eine Struktur, Union oder ein Enum kann außerdem direkt bei der Definition gesetzt werden. Dabei müssen allerdings zwei Namen vergeben werden. Zum einen ein Originalname, der nur mit struct/union/enum als Prefix funktioniert, und ein Alias-Name. Typischerweise endet der Originalname auf "__T" und der Alias auf "_t". 

#include <stdio.h>

struct struct1 {
    int x;
};

typedef struct struct1 struct1_t;

typedef struct struct2__T {
    int x;
} struct2_t;

enum enum1 {
    ONE1,
    TWO1
};

typedef enum enum1 enum1_t;

typedef enum enum2__T {
    ONE2,
    TWO2
} enum2_t;

int main()
{
    struct1_t s1;
    struct2_t s2;
    struct struct2__T s3;
    enum1_t e1;
    enum2_t e2;

    ((void)s1);
    ((void)s2);
    ((void)e1);
    ((void)e2);

    return 0;
}
Zuletzt geändert: Freitag, 18. Mai 2018, 17:31