Мне приходят значения. Если новое значение отличается от старого значения на скажем 20% - я переписываю старое значение новым.
void UpdateOnHisteresis( float *old_val, float *new_val, uint32_t histeresis)
{
if ( (*old_val + *old_val*(histeresis/100)) >= *new_val ||
(*old_val - *old_val*(histeresis/100)) <= *new_val)
{
*old_val = *new_val;
}
}
Но теперь у меня есть поля не только float но и int и я решил сделать генерик
void UpdateOnHisteresis(void *old_val, void *new_val, uint32_t histeresis)
{
if ( (*old_val + *old_val*(histeresis/100)) >= *new_val ||
(*old_val - *old_val*(histeresis/100)) <= *new_val)
{
*old_val = *new_val;
}
}
но компилятор ругается - expression must be a modifiable lvalue.
Не соображу как правильно сделать кастинг.