#include <stdio.h>
#include <stdlib.h>

/* The function to execute */
void func(int * a) 
{
    printf("func executes, a = %d\n", *a);
}

/* A wrapper around the function; takes a single argument, the func */
void create(void tmp(int *))
{
    /* set the arg to a local variable; demonstrates type info */
    void (*func)(int *) = tmp;

    /* invoke func */
    int b = 5;
    func(&b);
}

int main()
{
    /* invoke the wrapper */
    create(func);

    /* return */
    return 0;
}
