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