c: MISRA2012

Miroslav Draxal evik na volny.cz
Čtvrtek Březen 25 19:04:58 CET 2021


Asi jsem měl napsat, že chci, aby to tu konstantu vypočítalo při překladu. Tohle je očesané na kost, abych se nějak dopídil k rozuzlení.
Překladač to samozřejmě správně vypočte na 18.

!            volatile uint8_t x = (uint8_t) (20.1 / 1.1);
0x1412: MOVLW 0x12
0x1414: MOVWF obj_size_RAM, ACCESS



!            volatile double tmp = 20.1 / 1.1; //alebo iny float typ pre danu platformu
0x1416: MOVLW 0x8C
0x1418: MOVWF dividend, ACCESS
0x141A: MOVLW 0x2E
0x141C: MOVWF number, ACCESS
0x141E: MOVLW 0x92
0x1420: MOVWF divisor, ACCESS
0x1422: MOVLW 0x41
0x1424: MOVWF denom, ACCESS
!            volatile uint8_t x = (uint8_t) tmp;
0x1426: MOVFF dividend, 0x1
0x1428: NOP
0x142A: MOVFF number, 0x2
0x142C: NOP
0x142E: MOVFF divisor, 0x3
0x1430: NOP
0x1432: MOVFF denom, 0x4
0x1434: NOP
0x1436: CALL 0x300E, 0
0x1438: NOP
0x143A: MOVF 0x1, W, ACCESS
0x143C: MOVWF obj_size_RAM, ACCESS

Takhle ne.
Míra


-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Miroslav Šinko
Sent: Thursday, March 25, 2021 6:28 PM
To: HW-news
Subject: Re: c: MISRA2012

Skuste

double tmp = 20.1 / 1.1;  //alebo iny float typ pre danu platformu
uint8_t x = (uint8_t) tmp;

miro

št 25. 3. 2021 o 18:02 Miroslav Draxal <evik na volny.cz> napísal(a):
>
> Dobrý den,
>
> Pokud
>
> uint8_t x = (uint8_t) (20.1 / 1.1);
>
>
>
> [misra-c2012-10.8] The value of a composite expression shall not be cast to a different essential type category or a wider essential type
>
> uint8_t x = (uint8_t) (20.1 / 1.1);
>
>                    ^
>
> Jak to správně přetypovat, aby to bylo košér. Čtu kde co, ale nějak mě nenapadá řešení. Pomůžete?
>
> Míra
>
> _______________________________________________
> 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



Další informace o konferenci Hw-list