ukazatel typu void to char

Pavel Hudecek edizon na seznam.cz
Sobota Duben 8 00:13:04 CEST 2017


Za rozumnější bych považoval přetypovat ten pObj:
*(unsigned char *)pObj = _eeprom_read(ee_addr++);

PH

From: Miroslav Draxal 
Sent: Friday, April 07, 2017 11:59 PM
To: 'HW-news' 
Subject: RE: ukazatel typu void to char

Cele je to takhle

 

unsigned char _eeprom_read(unsigned int AdresaEEPROM);

 

void _eeprom_read_object(unsigned int ee_addr, void *pObj, unsigned char obj_size) {

    //unsigned char *p = obj_p;

 

    while (obj_size--) {

        *pObj = (void) _eeprom_read(ee_addr++);

        pObj++;

    }

}

 

From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Pavel Hudecek
Sent: Friday, April 07, 2017 9:48 PM
To: HW-news
Subject: Re: ukazatel typu void to char

 

Hlavně mi teda není jasné, k čemu je potřeba přetypovávat výsledek funkce na void.

 

PH

 

From: tomas mainzer 

 

>> *pObj++ = (void) _eeprom_read(ee_addr++);

nevim co na to norma (mozna to nejak definuje, rad se poucim), ale prijde mi ze kazdy uhoz v tom radku smrdi prusvihem ;-)

doplneni: tak gcc ma v tom ohledu odchylku od normy C a definuje sizeof(void)==1 se vsemy dusledky pro pointerovou aritmetiku.

Ale pretypovani na (void) mi stale prijde divne. co takto:
*((unsigned char*)(pObj++)) = _eeprom_read(ee_addr++); 

 

 

Dne 7. dubna 2017 19:00 Miroslav Draxal <evik na volny.cz> napsal(a):

Pro čtení jsem to udělal takhle, sice to hlásí varování o nepředvídatelném
chování, ale koukl jsem na disa. a tam není žádný problém.
Takže jsem pro tenhle řádek vypnul hlášení varování.
*pObj++ = (void) _eeprom_read(ee_addr++);

Jakou paseku by tenhle kód mohl dělat? Nenapadá mě nic.

-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jan Waclawek
Sent: Friday, April 07, 2017 3:48 PM
To: HW-news
Subject: RE: ukazatel typu void to char

Hm tak ak mate zapnute aj vsetky optimalizacie, tak to je zvlastne, lebo
toto je bezne pouzivana paradigma.

V skutocnosti je to asi jedina uzitocna aplikacia pre void*.

V kazdom pripade vsak este stale nedoporucujem robit nic ine ako pouzit tu
"pomocnu" premennu.

wek


>Ano, poslední XC8 v1.41 pro.
>
>-----Original Message-----
>
>A mate tu plnu verziu prekladaca?
>
>wek
>
>
>----- Original Message ---------------
>>Jo, jenľe kdyľ se podívám do disas. (coľ je moje váąeň, jak to dělají)
>>tak tam mám 3x nesmyslné předávání hodnot z ram do ram, neľ tu adresu
>pouľije.

>>Rád bych se tomu vyhnul.
>>
>>-----Original Message-----
>>
>>No len si ho pekne urobte, predidete tym zbytocnym problemom.
>>
>>wek
>>
>>
>>----- Original Message ---------------
>>>Nechce se mi "zřizovat" pomocný ukazatel *p.



--------------------------------------------------------------------------------
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20170408/3d64b2c0/attachment-0001.html>


Další informace o konferenci Hw-list