#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
void func(int,char);
void(*func_2(void(*pfunc())(int,char)))(int,char);
int main()
{
void(*pfunc_1)(int,char) = func_2(func);
pfunc_1(343,'S');
return 0;
}
void func(int x,char y)
{printf("\nx = %d, y = %c\n",x,y);}
void(*func_2(void(*pfunc())(int,char)))(int,char)
{return pfunc();}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojaW5jbHVkZSA8c3RkbGliLmg+ICAKI2luY2x1ZGUgPGlvc3RyZWFtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKdm9pZCBmdW5jKGludCxjaGFyKTsKdm9pZCgqZnVuY18yKHZvaWQoKnBmdW5jKCkpKGludCxjaGFyKSkpKGludCxjaGFyKTsKIAppbnQgbWFpbigpCiAKewogICAgICAgdm9pZCgqcGZ1bmNfMSkoaW50LGNoYXIpID0gZnVuY18yKGZ1bmMpOwogICAgICAgcGZ1bmNfMSgzNDMsJ1MnKTsKICAgICAgIHJldHVybiAwOwp9CiAKdm9pZCBmdW5jKGludCB4LGNoYXIgeSkKe3ByaW50ZigiXG54ID0gJWQsIHkgPSAlY1xuIix4LHkpO30KIAp2b2lkKCpmdW5jXzIodm9pZCgqcGZ1bmMoKSkoaW50LGNoYXIpKSkoaW50LGNoYXIpCntyZXR1cm4gcGZ1bmMoKTt9
prog.cpp: In function 'int main()':
prog.cpp:14:46: error: invalid conversion from 'void (*)(int, char)' to 'void (* (*)())(int, char)' [-fpermissive]
void(*pfunc_1)(int,char) = func_2(func);
^
prog.cpp:9:7: note: initializing argument 1 of 'void (* func_2(void (* (*)())(int, char)))(int, char)'
void(*func_2(void(*pfunc())(int,char)))(int,char);
^