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