Как изменить количество аргументов в указателе на функцию на С?

Вот например у меня есть две функции с разным количеством аргументов:

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 шт):

Автор решения: San Rembak

Лично у меня случай был с двумя плагинами, и указателем надо было брать функции площадей разных фигур, из разных плагинов. Сообственно там разное количество аргументов, тобиш: площадь круга - один аргумент (r), площадь треугольника через три стороны - три аргумента (a,b,c). Сообственно можно просто объявить вот такой указатель:

double (*pointer)();

И применять туда функции, в моём случае были плагины, тобиш dlsym(plug, "функция") ,и просто передавать туда Переменные в функцию:

double a = 5, b = 5, c = 5;
pointer(a,b,c);
→ Ссылка