Zugrundeliegender Typ für std :: uint8_t

8

Frage :
Gibt es eine C ++ - Toolchain, in der std::uint8_t existiert, aber nicht eine Typedef für unsigned char (oder char , wenn sie nicht signiert ist)?

BEARBEITEN: Umgekehrt: Ist so etwas bei einer normkonformen Implementierung überhaupt möglich?

Hintergrund / Motivation :
Ich frage hauptsächlich, weil ich wissen möchte, ob std::uint8_t* portabel verwendet werden kann, um auf einzelne Bytes zuzugreifen (genau wie unsigned char* ). Und ja, mir ist std::byte bekannt, aber das ist hier nicht relevant. Ich bin hauptsächlich an Toolchains für x86, Arm und Mips interessiert, aber aus Neugier möchte ich auch gerne von anderen Beispielen hören.

    
MikeMB 21.06.2017, 20:28
quelle

1 Antwort

1
  1. char ist kein vorzeichenloser Integer-Typ , auch wenn er tatsächlich vorzeichenlos ist. Da uint8_t ein vorzeichenloser Integertyp sein muss, darf es niemals char sein.
  2. CHAR_BIT muss mindestens 8 sein, während der nächstkleinere standardmäßige Ganzzahlwert ohne Vorzeichen, unsigned short , mindestens 16 Bits haben muss. Wenn uint8_t existiert, muss es "ein vorzeichenloser Integertyp mit einer Breite von 8 und keinen Füllbits sein". Wenn uint8_t einen standardmäßigen, vorzeichenlosen ganzzahligen Typ angibt, dann kann es nur unsigned char sein.
  3. Nichts in der Formulierung verhindert jedoch, dass uint8_t einen implementierungsdefinierten erweiterten vorzeichenlosen Integer-Typ angibt. Ich kenne jedoch keine Implementierungen, die dies tun.
T.C. 22.06.2017 07:07
quelle

Tags und Links