pointer v c

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Úterý Leden 6 21:05:19 CET 2015


Vsak se spis ptam, ten soucet je typove atd. taky OK, ne?
Asi to mam radsi, ze to ma min znaku, taky mi ten zapis s & prijde 
trosku jako rovnak na ohejbak, prekladaci je asi forma zapisu fuk a 
prelozi to stejne...
S optimalizacema jsem mel vzdycky problem jen diky knihovnam, nebo ze mi 
to poprehazovalo posloupnost nejakych prirazeni co se tykala HW registru...

Dnes jsem ale pul dne resil problem s prenosem velkeho bufferu mezi C++ 
a C#, stale jsem resil, proc to spadne na pristup do pameti a v ktere 
velikosti muze byt chyba, studoval marshalling, unsafe, definoval pole 
staticky, alokoval ruzne az v C++,... a nakonec kdyz uz jsem do krokoval 
v assembleru jsem zjistil, ze jsem misto handle dal do uplne jineho 
parametru index zarizeni a ten byl nulovy, typ UINT32 a knihovna to 
klidne pouzila jako ukazatel. ;-) To jsem myslel, ze se odstrelim, 
takova blbost a prehlednuti...

Dne 6. 1. 2015 v 20:50 Josef Štengl napsal(a):
> Protože tak je to sémanticky, logicky a typově správně a je poznat co 
> tím autor myslel. Zamezí se tak spoustě chybám.
>
> Dotaz byl jak by to mělo být naspáno správně a ne jak si to Jarda doma 
> patlá. Do toho mi nic není. :-D
>
> Mimochodem není to přehlednější, na pro vás přehlednějším zápisu není 
> mě zcela jasné co jste tím myslel. A u složitějších konstrukcí je to 
> náchylné k chybám typu „to je přece jasné, u mě to funguje“. Asi tak.
>
> Zítra mě čeká hrabání se v kódu, který by bylo dobré zrychlit. Jakmile 
> se na něj spustí optimalizace vyšší než -O1, tak přestane fungovat 
> :-(. Tak třeba proto.
>
> Dne 6.1.2015 v 20:32 Jaroslav Buchta napsal(a):
>> Tohle me vzdycky dostane, proc nenapsat radeji podle me prehlednejsi:
>>
>> pepromuk = DATA_EEPROM_START_ADDR + eprom_ofst;
>>
>> Dne 6. 1. 2015 v 20:03 Josef Štengl napsal(a):
>>> /* takhle by to mělo být podle mě správně a až na jednu či dvě 
>>> drobnosti snad projít i statickým analyzátorem.
>>>    jen takový nástin, ten offset, jestli to je ofset, se mi jeví 
>>> nějaký zbytečně dlouhý ... */
>>>
>>> #include <stdint.h>
>>>
>>> #define DATA_EEPROM_START_ADDR  (uint8_t *)0x08080000u //4Kb 16 X 
>>> 256 BYTE
>>> #define LEDErezim               (uint8_t *)0x080803E0u //L  0 led 
>>> neblika 1 led blika
>>>
>>> void Reasetchar (uint32_t eprom_ofst)
>>> {
>>>   uint8_t  * pepromuk;
>>>   uint8_t cis1;
>>>
>>>   pepromuk = &DATA_EEPROM_START_ADDR[eprom_ofst];
>>>   cis1 = *pepromuk++;
>>>   ...........
>>>   ...........
>>>   pepromuk = LEDErezim;
>>>
>>>   if (*ppp > 0)
>>>   {
>>>     cis1 |= 1;
>>>   }
>>> }
>>>
>>> Dne 6.1.2015 v 15:07 Fanda Kopriva napsal(a):
>>>> Dobry den
>>>> jen bych poprosil o  ujasneni.
>>>>
>>>>
>>>> #define DATA_EEPROM_START_ADDR     0x08080000     //4Kb  16 X 256 BYTE
>>>> #define  LEDErezim   0x080803E0    //L  0 led neblika 1 led blika
>>>>
>>>> void Reasetchar (unsigned long epromadr)
>>>> {
>>>> unsigned char *pepromuk;
>>>> unsigned char cis1;
>>>> pepromuk = DATA_EEPROM_START_ADDR + epromadr;
>>>> cis1 = *pepromuk++;
>>>> ...........
>>>> ...........
>>>> pepromuk = LEDErezim;
>>>>   if (*ppp>0) cis1 |=1;
>>>> }
>>>>
>>>> dela to co ma ,ale prekladac hlasi pro radky
>>>>         pepromuk = DATA_EEPROM_START_ADDR + epromadr;
>>>> a
>>>>       pepromuk = LEDErezim;
>>>> upozorneni
>>>>                       Implicit conversion of int to ptr .
>>>>
>>>> Jak by to melo byt spravne.
>>>>
>>>> Dekuju Fanda
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> HW-list mailing list  -  sponsored by www.HW.cz
>>>> Hw-list na list.hw.cz
>>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>>
>> ---
>> This email has been checked for viruses by Avast antivirus software.
>> http://www.avast.com
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


---
This email has been checked for viruses by Avast antivirus software.
http://www.avast.com



Další informace o konferenci Hw-list