RE: pole bitového pole v C

Miroslav Draxal evik na volny.cz
Sobota Leden 12 22:09:38 CET 2013


Až mi zacíná troch svítat. Teoretická otázka. Dá se podstrčit funkci 

 

void VentilSet (_SetBitPole CisloVentilu) //z předchozího příkladu

 

VentilSet (1); 

 

Jestli tomu rozumím, tak l-hodnota v žádném případě nelze?

 

 

From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On
Behalf Of Jaroslav Buchta
Sent: Saturday, January 12, 2013 9:44 PM
To: HW-news
Subject: Re: pole bitového pole v C

 

Ja proste na tyhle prevody jdu pres ukazatele, takze bych to udelal zase
takhle (nezkouseno)

VentilSet (*((_SetBitPole*)&TMP));

Proste se vezme adresa promenne TMP operatorem &, ukazatel na cokoli  jde
pretypovat na ukazatel na cokoli jineho, cili i na union a pak se operatorem
dereference * zase ziska objekt na odkazovane adrese (uz pretypovany). Mozna
to jde i jednoduseji, ale ja takhle prevadim i typy z neznaminkovych na
znamenkove, napr. v komunikacnich paketech, kdyz UINT uvnitr obsahuje
hodnotu se znamenkem, napr.: float fTempSecIn =
(float)*(short*)&ProcImgRO.r.tempSecInp100; 


Dne 12.1.2013 21:34, Miroslav Draxal napsal(a):

Hmm, přiznávám, že tomu nehovím, neumím to přečíst. Nic. Ráno se k tomu
vrátím, a budu se to snažit pochopit. Pro dnešek ještě jednu věc.

 

Mějme podprogram

void VentilSet (_SetBitPole CisloVentilu)

 

kde 

typedef union {

    char value;

 

    struct {

               unsigned CisloBitu : 6;

               unsigned SetClr : 1;

    } bits;

} _SetBitPole;

 

Pokud budu mí char TMP

Jak to dostanu do volání toho podprogramu.

 

VentilSet(TMP) 

 

Stále se jedná o 1byt.

Je mi jasné že na začátku vytvořit TMP jako _ SetBitPole

Přetypování char na union nejde. Jak na to? Míra

 

From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On
Behalf Of Jaroslav Buchta
Sent: Saturday, January 12, 2013 8:27 PM
To: HW-news
Subject: Re: pole bitového pole v C

 

Takhle mi to AVR C sezere: (jeste jsem musel doplnit zavorky)

char byt;

typedef union bytX

{

    char value;

    unsigned bit0 : 1;

}_byt;

int main (void)
{
    
    (*((_byt*)&byt)).bit0 = 1;







__________ Informace od ESET NOD32 Antivirus, verze databaze 7887 (20130112)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz





_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list




__________ Informace od ESET NOD32 Antivirus, verze databaze 7887 (20130112)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz



__________ Informace od ESET NOD32 Antivirus, verze databaze 7887 (20130112)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20130112/8e92ad1c/attachment.htm>


Další informace o konferenci Hw-list