pointery C
Miroslav Draxal
evik na volny.cz
Úterý Květen 21 22:12:44 CEST 2013
Přiznám se, že nějak podvědomě jsem to tušil.
Čili finále?
tmp = (*((_ProgramEEprom*) pTest)).Mesic;
ps. Odpovídal bych dřív, ale @volny.cz měl nějaký výpadek. Míra
From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On
Behalf Of Jaroslav Buchta
Sent: Tuesday, May 21, 2013 9:41 PM
To: HW-news
Subject: Re: pointery C
No jeste vedle, to & tam taky nepatri - pTest uz je pointer, takze ho jen
pretypovat nebo rovnou definovat jako ukazatel na ProgramEEprom a pretypovat
pri prirazeni adresy...
Dne 21. 5. 2013 21:36, Miroslav Draxal napsal(a):
Samosebou totální blbost
Místo
tmp = (*((_ProgramEEprom*) * pTest)).Mesic;
Takhle
tmp = (*((_ProgramEEprom*) & pTest)).Mesic;
dyť tam musím cpát adresu!!! Díky všem. Míra
From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On
Behalf Of Milan B.
Sent: Tuesday, May 21, 2013 1:59 PM
To: hw-list na list.hw.cz
Subject: Re: pointery C
On 5/21/2013 1:29 PM, Miroslav Draxal wrote:
Dobrý den,
Toto je pokračování vlákna" C _ jak rozepsat řádek". Bylo zpřetrháno, tak
proto nově.
Opět ukazatele. Mocný nástroj, ale složitý!!!
typedef union {
char value;
struct {
unsigned Bit0 : 1;
unsigned Bit1 : 1;
unsigned Bit2 : 1;
unsigned Bit3 : 1;
unsigned Bit4 : 1;
unsigned Bit5 : 1;
unsigned Bit6 : 1;
unsigned Bit7 : 1;
} Bits;
struct {
unsigned cas : 7;
unsigned bit_PROLNpauza : 1; // set = prolnutí
} ProlnutiPauza;
struct {
unsigned Mesic : 5;
unsigned AutoOnOff : 1;
unsigned EndProgram : 1;
};
} _ProgramEEprom;
_ProgramEEprom ProgramRAM[PocetProgEEprom][DelkaProgEEprom]
char *pTest
pTest = &ProgramRAM[Program][RAM_AutoMesic].value;
// na adrese D0 je 0x0B
tmp =(*((_ProgramEEprom*)*pTest)).value;
// načte 1 - chyba
tmp = *pTest;
// načte 0x0B - ok
Je problém s
tmp =(*((_ProgramEEprom*)*pTest)).value;// načte 1
tmp =(*((_ProgramEEprom*)*pTest)).mesic;// načte taky 1
ale načítat by měl 0x0B. Co mi zase uniká? Míra
Na prvy, zbezny pohlad:
pTest obsahuje smernik na ...value.
Lenze vy tu hodnotu, na ktoru ukazuje (0x0b) znova konvertujete (castujete)
na smernik na strukturu a citate obsah z takto ziskanej adresy.
Predpokladam, ze na adrese 0x0b bude ulozena ta hodnota 1, ktoru takto
vycitavate.
-m-
__________ Informace od ESET NOD32 Antivirus, verze databaze 8355 (20130520)
__________
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 8357 (20130521)
__________
Tuto zpravu proveril ESET NOD32 Antivirus.
http://www.eset.cz
__________ Informace od ESET NOD32 Antivirus, verze databaze 8357 (20130521)
__________
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 8359 (20130521)
__________
Tuto zpravu proveril ESET NOD32 Antivirus.
http://www.eset.cz
__________ Informace od ESET NOD32 Antivirus, verze databaze 8359 (20130521)
__________
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/20130521/d1131215/attachment.htm>
Další informace o konferenci Hw-list