Abgeschickt von Eberhard am 15 Februar, 2006 um 11:02:41:
Antwort auf: Bit-Fields sind gehören nicht in portablen Code! von Patrick am 15 Februar, 2006 um 09:18:06:
: Bit Fields, z.B.
: struct
: {
: int a:3;
: int b:2
: } s;
: sind Compiler-, Betriebssystem- und Platformabhängig und gehören deshalb nicht in portablen Code. Auch nicht in Embedded-System-Code, der i.d.R. nicht nur im Target, sondern auch in einer Win-Simulation laufen soll.
: Merke: Plain-C-Code, der nicht ständig neu geschrieben werden soll, DARF KEINE Bit-Fields enthalten.
: So steht es im Einfachbuch.
Bit-Fields sind im C-Standard definiert, warum sollte man sie nicht nutzen?
Das Portabilitätsproblem liegt nicht am Bit-Field, sondern an dem Basistyp, welcher dafür zugrunde gelegt wird.
Schon eine Struktur wie z.B.
struct
{
int a;
int b;
} s;
ist nicht portabel, weil ein int je nach Compiler unterschiedlich breit ausfällt.
Wird z.B. int32 für jeden Compiler an entsprechender Stelle richtig definiert, wird
struct
{
int32 a;
int32 b;
} s;
portabel. Ebenso
struct
{
int32 a:3;
int32 b:2;
} s;
C-Code, der nicht ständig neu geschrieben werden soll, DARF IN STRUKTUREN KEINE BASIS-TYPEN benützen. Ist das noch Plain-C?
Oder anders gesagt:
Plain-C ist nicht für portable Programmierung geeignet.