C Union ansprechen

Gast #984258
Lesenswert?
• ▲
▼
moin, hab da ein verständnisproblem mit dem Ansprechen einer Union.

Im Header ist definiert:

#define WORDREG(register_name) union\
        {\
        unsigned int register_name;\
        struct\
             {\
             unsigned char register_name ## L;\
             unsigned char register_name ## H;\
             };\
        }



und des weiteren:

typedef struct DMA_struct
             {
             unsigned char CTRL; // Control
             ...
             WORDREG(TEMP); // Temporary Reg. For 16/24-bit Access
             ...

             } DMA_t;

So, in meinem source code kann kann ich CTRL einfach mit:
DMA.CTRL = 0x80; ansprechen.(kein Problem).
Wie spreche ich jetzt aber DMA.TEMP (H oder L) an?
#984342
Lesenswert?
• ▲
▼
Dann werfe mal einen verschärften Blick in die Sourcen.
Steht da wirklich "WORDREG(TEMP);", und nicht "WORDREG(TMP);", oder 
"WORDREG(temp);", oder ...
Oder steht es vielleicht in einer weiteren struct innerhalb von 
DMA_struct?
Poste doch mal die komplette Definition von DMA_t.
Gast #984360
Lesenswert?
• ▲
▼
Unbenannte Structs und Unions scheinen nicht Standard zu sein. Übergibt
man dem GCC die Option -std=c89 oder -std=c99, meckert er ebenfalls,
dass DMA_t keine Member mit den Namen TEMP, TEMPL und TEMPH enthält.

Vielleicht muss man beim Codevision im Gegensatz zum GCC diese
Erweiterungen explizit aktivieren.

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