一段小代码出现assignment from incompatible pointer type [enabled by default]

问题遇到的现象和发生背景

[Warning] assignment from incompatible pointer type [enabled by default]
刚学指针,不知道我的程序为什么会出现这个警告QAQ
感谢解答~

用代码块功能插入代码,请勿粘贴截图
#include <stdio.h>
char max(char a, char b)
{    return (a>b)?a:b;
} 

int main() 
{    char a, b;
    char (*pm)();
    pm=max;
    scanf("%c %c", &a, &b);
    printf("%c\n", (*pm)(a,b));
    return 0;
}

运行结果及报错内容

[Warning] assignment from incompatible pointer type [enabled by default]

我的解答思路和尝试过的方法

又写了一个相似的代码,这个就没有报错

#include <stdio.h> 

int max(int a, int b)
{    return a>b?a:b;
}

int main()
{
    int a, b, (*pm)(); 
    scanf("%d %d", &a, &b);
    pm=max;
    printf("%d\n",(*pm)(a,b));
    return 0;
}

我想要达到的结果

char (*pm)(char,char);定义的时候这样试下呢