IAR MSP430 Union-Problem

OP #1112450
Lesenswert?

Hi,

ich habe folgenden Code:
 typedef struct{
  union sc {
    UCHAR scbyChar;
    struct {
      USIGN8 x1 : 1;
      USIGN8 x2 : 1;
      USIGN8 x3 : 1;
      USIGN8 x4 : 1;
      USIGN8 x5 : 1;
      USIGN8 x6 : 1;
      USIGN8 iPData : 1;
      USIGN8 eD : 1;
    } scbyStruct;
  } scunion;


  union eq1 {
    UCHAR eqbyChar;
    struct {
      USIGN8 i : 3;
      USIGN8 r : 1;
      USIGN8 t : 2;
      USIGN8 m : 2;
    } eqbyStruct;
  } eq1union;

  USIGN16 ec1;

  union eq2 {
    UCHAR eqbyChar;
    struct {
      USIGN8 i : 3;
      USIGN8 r: 1;
      USIGN8 t : 2;
      USIGN8 m : 2;
    } eqbyStruct;
  } eq2union;

  USIGN16 ec2;

[...]
} eb_t;

Jetzt belegt dieser dämliche IAR-Compiler für eq1 richtigerweise 1 Byte.
Für eq2 reserviert er aber 2 Byte (bzw der Abstand zu ec2 beträgt 2 
Byte).

Woher kommt das zusätzliche Byte? "Optimierung"?

Und vor allem: Wie werde ich es wieder los?

Ich will mit Zeigern arbeiten, aber das vermasselt er mir hier 
gewaltig...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren