Как сделать обобщенную функцию, используя void * в c?

у меня естьincr функция для увеличения значения на1 Я хочу сделать это общим, потому что я нене хочу делать разные функции для одной и той же функциональности.

Предположим, я хочу увеличить ,,intfloatchar от1

void incr(void *vp)
{
        (*vp)++;
}

Но проблема, которую я знаю,Dereferencing a void pointer is undefined behaviour, Иногда это может дать ошибку:Invalid use of void expression

мойmain Функцией является:

int main()
{

int i=5;
float f=5.6f;
char c='a';

incr(&i);
incr(&f);
incr(&c);

return 0;
}

Проблема в том, как это решить? Есть ли способ решить это вCтолько

или же

я должен буду определитьincr() для каждого типа данных? если да, то чтос использованиемvoid *

Та же проблема сswap() а такжеsort() Я хочу поменять и отсортировать все типы данных с помощью одной и той же функции.

Ответы на вопрос(7)

Ваш ответ на вопрос