Re: Problém s C kompilátorem nebo mezi klávesnicí a židlí?

Jindroush jindroush na seznam.cz
Neděle Červenec 7 20:33:13 CEST 2019


Co se stane, kdyz prehodite biboch, aby v deklaracich bylo prvni?

     uint16_t biboch;
     uint8_t data[4];
     uint8_t *output = membuf+addr;
     uint16_t bytes_avail;
     uint8_t *temp;
     uint8_t len;

On 07.07.2019 20:18, Jakub Ladman wrote:
> Lepší dočíst trochu dál ...
>
> Dne 07. 07. 19 v 20:03 Jindroush napsal(a):
>> Nedocetl jsem, ale hned se zeptam:
>> if(length/0x100)
>>             biboch = 0x100;
>>         else
>>             biboch = length%0x100;
>>
>>         data[3] = (biboch & 0xff);
>>
>> Je vam jasne, ze v pripade, ze length >= 0x100, bude v data[3] vzdy 0?
>
> Hw je úplně blbý, a neumí poslat 0 bajtů, jen 1 až 256 a kolik toho má 
> poslat se mu říká právě jedním bajtem.
>
> Tedy 0 znamená 256
>
> Při prvním průchodu, když length je >= 0x100 bude data[3] = 0, ale po 
> načtení prvního balíku dat se do stejného místa dostanu s length 
> zmenšeným o těch 0x100 a pak nakonec mi zbyde poslední paket, který 
> bude kratší než 0x100 a pro něj bude data[3] nenulové.
>
> Možná je tam někde nějaká jiná chyba, ale vzhledem k tomu že mám 
> vypnuté optimalizace by mi to samovolně nemělo proměnnou vynulovat 
> když vlezu do while smyčky.
>
> Nebo jo? Napadá mě, že to je nějaká bezpečnostní featura, ale spíš mi 
> přijde že to je blbost.
>
> BTW: když je proměnná static, tak je to ok.
>
> J.
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list at list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


-- 
Jindroush <jindroush at seznam.cz>



Další informace o konferenci Hw-list