我试图了解以下typedef是什么意思。它们是功能指针吗?
typedef int Myfunc(char *);
static Myfunc myfunc;
int myfunc(char *string)
{
printf("%s\n", string);
return 0;
}
我知道typedef int Myfunc(char *)
表示func Myfunc
返回一个整数,这就是全部,好吗?我想,下一个声明,如何调用myfunc
?它应该是这种方式static Myfunc *myfunc
,意思是一个函数指针,不是吗?
答案 0 :(得分:3)
第二行是函数的声明,而不是函数指针。该函数的类型为MyFunc
,称为myfunc
,并具有静态链接:这意味着该函数不可用于编译到同一对象中的其他源文件。
答案 1 :(得分:1)
myfunc
的签名是:typedef int (*MyFunc)(char *);
然后你可以声明一个MyFunc
类型的变量,即
static MyFunc func_ptr;
然后,您可以将与签名匹配的函数分配给此变量。
答案 2 :(得分:1)
调用myfunc
与函数调用相同:
myfunc("a-string");
答案 3 :(得分:0)
我不确定这是有效的代码。
typedef int (*Myfunc)(char *);
声明一个类型Myfunc
,它是指向一个带char *
并返回int
的函数的指针。
您无法使用typedef转发声明函数。省略static Myfunc myfunc;
,而是使用
static int myfunc(char *string) {