Monday 26 June 2017

pass a variable number of function pointers

#include 

int fun1(), fun2();

main()
{
  int (*p1)();
  int (*p2)();
  p1 = fun1;
  p2 = fun2;
  display("Bye", p1, p2);
}
/* pass a variable number of function pointers*/
void display(char *s,...)
{
  int (*pp1)(), (*pp2)();
  va_list ptr;
  typedef int (*f)(); //This typedef is  very important.

  va_start(ptr,s);

  pp1 = va_arg(ptr, f); // va_arg(ptr, int (*)()); would NOT have worked!
  pp2 = va_arg(ptr, f);

  (*pp1)();
  (*pp2)();

}

fun1()
{
  printf("\nHello!\n");
}

fun2()
{
  printf("\nHi!\n");
}

No comments:

Post a Comment