How do I declare a function pointer that points to a function taking the same function pointer as the argument?

I've tried the following without success:

```
typedef void (*fnptr)(void (*)());

void func(fnptr)
{
    /* ... */
}

void func2(fnptr)
{
    /* ... */
}

void main()
{
    fnptr fn = &func;
    func2(fn);
}

```

Is this possible?