Я пытаюсь скомпилировать старый код.
В зависимости от компилятора я получаю это предупреждение / ошибку, когда пытаюсь назначить указатель функции на void*
указатель:
warning: a value of type "double (*)(double, double)" cannot be assigned to an entity of type "void *"
error: invalid conversion from ‘double (*)(double, double)’ to ‘void*’
Я думаю, что старый код, используемый для компиляции старый компилятор, но я понимаю, что код недопустим и не должен компилироваться. Мне было интересно, есть ли void*
для функций. Я пробовал это до сих пор:
double sum(double a, double b){return a+b;}
typedef double(*dDd)(double, double);
typedef void(*vFun)(void);
dDd funPtr = sum; // compiles and works
void* vFunPtr = sum; // does not compile
vFun vFun_p = sum; // does not compile
, но он не компилируется.
Как это исправить? Я был бы рад, если бы также было обобщение void*
на функции.