Re: Začátečnický dotaz na C - variant ve struktuře
Petr Labaj
labaj na volny.cz
Středa Listopad 12 21:37:27 CET 2014
Aha, takže ne alias ve struktuře, ale alias (v tomto případě union) struktur.
Ale pak bych předpokládám k tomu musel přístupovat:
maj.m1.obusek = 1;
Já bych potřeboval:
prvni_maj.mavatko = 1; // zapise 1 do 16bitu
prvni_maj.obusek = 2; // zapise 2 do 32 bitu
Díky.
PL
******************************
From: "Jaroslav Buchta" <jaroslav.buchta na hascomp.cz>
To: "HW-news" <hw-list na list.hw.cz>
Sent: Wednesday, November 12, 2014 9:23 PM
Subject: Re: Začátečnický dotaz na C - variant ve struktuře
typedef struct {
u16_t mavatko;
u16_t zavazek;
} prvni_maj;
typedef struct {
u32_t obusek;
} druhy_maj;
typedef union {
prvni_maj m1;
druhy_maj m2;
} maj;
A jde to napsat v ruznych kombinacich najednou.
Dne 12. 11. 2014 21:15, Petr Labaj napsal(a):
> Omlouvám a stydím se za začátečnický dotaz.
> Jak se prosím dá ve struktuře v C zapsat variantní
> přístup k proměnným?
>
> Mějme strukturu "prvni_maj", která má třeba 16bitové členy "mavatko"
> a "zavazek". Ale občas bych ke stejné adrese v paměti potřeboval
> přistupvat jako ke 32bit proměnné "obusek".
> Neřešme teď prosím edianitu.
>
> typedef struct {
> u16_t mavatko;
> u16_t zavazek;
> } prvni_maj;
>
> Jak udělat to, abych se na stejné místo v paměti bez nějakého přetypovávání
> mohl odkazovat jako na 32bit hodnotu, tj. aby se struktura tvářila, že má formát:
>
> typedef struct {
> u32_t obusek;
> } prvni_maj;
>
> Tedy jak udělat něco jako alias. Unionem to předpokládám nejde, když potřebuju
> sdílet stejný datový prostor buď jako jednu velkou nebo více malých proměnných.
>
> Díky a nepohoršujte se prosím nad mými neznalostmi.
> PL
Další informace o konferenci Hw-list