it-swarm.com.de

Was ist der Unterschied zwischen UInt8 und uint8_t

Was ist der Unterschied zwischen UInt8 und uint8_t, oder UInt16 und unit16_t?

Was macht der _t implizieren?

38
user1845029

In C99 wurden die verfügbaren ganzzahligen Grundtypen (die ohne _t) als unzureichend eingestuft, da ihre tatsächlichen Größen systemübergreifend variieren können.

Daher enthält der C99-Standard Definitionen mehrerer neuer Integer-Typen, um die Portabilität von Programmen zu verbessern. Die neuen Typen sind besonders in eingebetteten Umgebungen nützlich.

Alle neuen Typen sind mit einem _t versehen und werden garantiert systemübergreifend einheitlich definiert.

Weitere Informationen finden Sie im Abschnitt Integer-Typen mit fester Breite im Wikipedia-Artikel über Stdint .

38
vdbuilder

Der Hauptunterschied ist, dass die uintX_t -Typen sind Standard-C, definiert durch C99 und höher, während UIntX dies nicht ist. Dies hat Auswirkungen darauf, wie portabel der Code ist. Code mit uintX_t -Typen können auf jedem Standard-C-Compiler ohne weitere Abhängigkeiten kompiliert werden. Code, der dagegen UIntX verwendet, muss diese Typen entweder selbst definieren oder von einer Bibliothek oder einem Framework abhängen, die bzw. das dies tut.

Ich denke nicht, dass Objective-C als solches zusätzliche Integer-Typen definiert, aber es kann durchaus sein, dass Ihr Framework (Coacoa, OpenStep?) Dies tut. Wenn Ihr Code außerhalb des Frameworks keinen Sinn ergibt, verwenden Sie das, was im Framework-Kontext idiomatisch ist. Ansonsten versuchen Sie, sich an die Standardtypen zu halten.

0
harald

normalerweise werden sie als typedef-Datentypen verwendet. "_t" steht für einen typedef-Datentyp. Wir geben einen solchen Namen an, damit sie in der gesamten Datei oder in der großen Codebasis problemlos verwendet und gelesen werden können.

* UInt8 und uint8_t - Char *

typedef unit8_t unsigned char

* UInt16 und unit16_t *

typedef unit16_t unsigned int (auf einem 16-Bit-Compiler)

0
PKS