Datentypen: WORD32, u_int32, int32, U32 wieso?

Gast #5536189
Hallo zusammen,

viele Programmierer definieren neu Datentypen: WORD32, u_int32, int32, 
U32, etc... wieso werden die "nativen" Datentypen von C/C++ redefiniert? 
wo ist der Sinn der Sache? ist es nur wegen Schreibarbeit zu sparen oder 
steckt ein anderer Sinn dahinter?
z.B.
typedef unsigned short WORD16;
typedef unsigned long  WORD32;
typedef unsigned long  DWORD;

typedef unsigned char  card8;
typedef unsigned short card16;
typedef unsigned long  card32;
typedef unsigned int   card;


typedef signed   char  int8;
typedef signed   short int16;

Gruß
Einige C-Compiler für Embedded Plattformen sind noch nicht im 21. 
Jahrhundert angekommen und unterstützen keine C99 Datentypen. Dann 
bedient man sich mitunter solchen Workarounds.


Die "cardX" Typen klingen für mich nach jemandem der aus der Pascal-Ecke 
kam ("cardinal" ist unsigned in Pascal).

Eventuell ist der Code auch schon über längere Zeit historisch 
gewachsen. Früher war das üblich sobald man mehr als eine Plattform 
unterstützen musste.
Der Wertebereich mancher C-Datentypen ist halt nicht strikt geregelt und 
u.U. plattformabhängig. Ein
1
int
 z.B. muss laut Standard mindestens 16-bit haben, ist auf vielen 
Plattformen aber 32-bit. Hier kann man dann z.B. ein Makro (etwa INT16) 
je nach Zielplattform entweder als
1
short
 oder
1
int
 definieren (wenn man nicht die Standard-Header verwenden will oder 
kann).

Weiterer möglicher Grund: Persönliche Vorlieben. :)
Gast
Florian S. schrieb:
> Der Wertebereich mancher C-Datentypen ist halt nicht strikt geregelt und
> u.U. plattformabhängig.

Und genau wegen diesem Murks fordern Coding-Standards, dass für jeden 
Compiler und Zielhardware Typdefs angelegt werden. So dass Variablen, 
die 16 Bit breit sein sollen auch 16 Bit breit sind, sogar nach einem 
Wechsel der Zielplatform und ohne das gesamte Programm zu ändern.
Ein Beispiel wäre da der im Automobilbereich verbreitete MISRA Standard. 
Was da nicht gemacht wurde, ist verbindlich Namen für die Typedefs 
vorzugeben.
Und so hast Du jetzt viele lustige Namensschemen.
Viele Compiler bringen mittlerweile eine stdint.h mit, die solche 
Typedefs beinhaltet.
Betriebssysteme nach Autosar Standard bringen Typdefs mit.
Firmen oder Entwicklergruppen oder einzelne Entwickler legen ihr Schema 
fest.
Und wär hätte das gedacht : 10 Ziffern, 2x26 Buchstaben und eine 
handvoll Sonderzeichen bieten genug Möglichkeiten, so dass alle Schemas 
etwas unterschiedlich ausfallen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.