c 中的 Typedef,当它需要 2 个参数时它是如何工作的

Typedef in c, how it works when it takes 2 arguments

任何人都可以向我解释一下这段代码是如何工作的吗?

typedef int (*compare)(const char*, const char*);

它是指向具有 return 类型 int 和两个 const char *.

类型参数的函数的类型指针的别名声明
typedef int (*compare)(const char*, const char*);

使用别名你可以声明一个指针类型的变量,如下面的演示程序所示

#include <string.h>
#include <stdio.h>

typedef int (*compare)(const char*, const char*);

int main( void )
{
    compare cmp = strcmp;
    printf( "\"Hello\" == \"Hello\" is %s\n",
            cmp( "Hello", "Hello" ) == 0 ? "true" : "false" );
}

其中 strcmp 是一个标准的 C 字符串函数,声明为

int strcmp(const char *s1, const char *s2);

并且指针(变量)cmp由函数的地址初始化。