c: MISRA2012

Miroslav Mraz mrazik na volny.cz
Čtvrtek Březen 25 18:37:03 CET 2021


V novějším C++ by to bylo asi takto
constexpr uint8_t x = lround(20.1 / 1.1) & 0xFFu;
v čistém C asi
const uint8_t x = lround(20.1 / 1.1) & 0xFFu;
ale patrně by se ta funkce lround volala, v C++ je konstantní výraz 
vyhodnocen už při kompilaci (něco jako makro), takže neotravuje.

Mrazíl


Dne 25. 03. 21 v 18:02 Miroslav Draxal napsal(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
> 


Další informace o konferenci Hw-list