为什么用C语言警告并且无法在C++中编译?

1 c compiler-construction warnings function-pointers

为什么这个代码

int (*g)(int);
int (*h)(char);
h = g;
Run Code Online (Sandbox Code Playgroud)

在C中,编译时给我这样的警告:

'警告:从不兼容的指针类型分配'

在C++中,无法编译.

dir*_*tly 6

原型不匹配.g是一个指向函数的指针,它接受int并返回一个int而是h一个指向一个函数的指针,该函数接受char并返回一个int.它们是两种不同的类型,因此警告(将苹果分配给橙子).