c - 为函数声明 typedef

标签 c

如果不在第 3 行中为 typedef 指定名称,以下代码如何工作?编译器如何将 pf 假定为新数据类型?

#include <stdio.h>

int fun(int, int);
typedef int (*pf) (int, int);
int proc(pf, int, int);

int main(){
    printf("%d\n", proc(fun, 6, 6));
    return 0;
}

int fun(int a, int b){
    return (a==b);
}

int proc(pf p, int a, int b){
    return ((*p)(a, b));
}

最佳答案

它确实给了它一个名字:

 typedef int (*pf) (int, int);
               ^^

这是 typedef 的名称。其内容如下:pf 是一个指向接受两个整数并返回一个整数的函数的指针

有关函数指针 typedef 如何工作的更多详细信息,请参阅:

关于c - 为函数声明 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18561325/

相关文章:

c - 为什么我的可变参数在 C 中不起作用?

在 (f)lex 中复制整个输入行(以获得更好的错误消息)?

c - 通过 SDL 使用调色板

c - 子进程中fork()后泄漏,为什么?

Java JNI 调用比预期慢(至少 2 毫秒/调用)

使用 8 位数据类型清除从 0 到 255 计数的代码

c - int 指针指向 void 指针,以某种方式指向 char 数组?

c - UDP 套接字 - 服务器卡在 recvfrom 上

c - 使用宏来表示等于 and 和运算符

c - sscanf 转换警告 c