Как изменить количество аргументов в указателе на функцию на С?
Вот например у меня есть две функции с разным количеством аргументов:
void print_ab(int a, int b)
{
printf("%d, %d\n", a, b);
}
void print_a(int a)
{
printf("%d",a);
}
И вот допустим пример програмы:
int main()
{
void(*f)(int,int)
f = print_ab;
f(5,3);
}
И вот как использовать этот же указатель только для print_a функции? Тобиш как поменять количество аргументов в этом указателе? Варианты типу этого не подходят:
f = print_a;
f(5,0);
Ответы (1 шт):
Лично у меня случай был с двумя плагинами, и указателем надо было брать функции площадей разных фигур, из разных плагинов. Сообственно там разное количество аргументов, тобиш: площадь круга - один аргумент (r), площадь треугольника через три стороны - три аргумента (a,b,c). Сообственно можно просто объявить вот такой указатель:
double (*pointer)();
И применять туда функции, в моём случае были плагины, тобиш dlsym(plug, "функция")
,и просто передавать туда Переменные в функцию:
double a = 5, b = 5, c = 5;
pointer(a,b,c);