using- und typedef-Anweisung

using-Anweisung

Mithilfe der using-Anweisung können Synonyme für bestehende Datentypen gebildet werden.

using SYNONYM = DTYP;

Ein solches Synonym kann nach seiner Definition überall dort stehen, wo seines ursprünglichen Datentyps zulässig ist. Steht die using-Anweisung innerhalb eines Blocks, gilt das definierte Synonym nur innerhalb dieses Blocks.

#include <print>

// Synonyme fuer unsigned ints bilden
using BYTE = unsigned char;
using WORD = unsigned short;
using DWORD = unsigned long;

int main()
{
    BYTE uchar = 0x11;
    DWORD ulong = 1'000'000;
    std::println("BYTE: {}, DWORD: {}",uchar,ulong);
}

BYTE: 17, DWORD: 1000000

Das Beispiel sollen nur die Anwendung von using aufzeigen. In realen Anwendungen sollten für die Definition von intrinsischen Datentypen mit definierter Größe die vordefinierten Symbole int8_t, int16_t, int32_t oder int64_t bzw. uint8_t, uint16_t, uint32_t oder uint64_t verwendet werden.

Einen weiteren Anwendungsfall für die using-Anweisung haben Sie bereits im Kapitel enum-Anweisung kennengelernt.

typedef-Anweisung

Die typedef-Anweisung erfüllt prinzipiell den gleichen Zweck wie die using-Anweisung und stammt aus der Urzeit des C++-Standards. Sie definiert ebenfalls ein Synonym für einen bestehenden Datentyp und hat folgende Syntax:

typedef DTYP SYNONYM;

Damit können die Anweisungen aus dem Beispiel wie folgt umgeschrieben werden:

#include <print>

// Synonyme fuer unsigned ints bilden
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;

int main()
{
    BYTE uchar = 0x11;
    DWORD ulong = 1'000'000;
    std::println("BYTE: {}, DWORD: {}",uchar,ulong);
}

BYTE: 17, DWORD: 1000000