Začátečnický dotaz na C - variant ve struktuře

Jindroush kubecj na asw.cz
Středa Listopad 12 22:10:21 CET 2014


Nemyslim, ze jste to vyjasnil ;)

Bud mate strukturu, ktera zabira 2+4 bajty a zapisujete do jedne z
casti, presne typovane.
Nebo mate struturu, ktera zabira 4 bajty (union) a zapisujete do jedne z
casti, ale prepisujete si je navzajem.

Co vlastne chcete?

J.

On 12.11.2014 21:37, Petr Labaj wrote:
> 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
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>


-- 
Jindroush (kubecj na avast.com)
http://www.kostky.org - Pro fany stavebnic LEGO.



Další informace o konferenci Hw-list