如果不在第 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/