这些函数typedef是什么意思?

时间:2011-11-27 13:03:20

标签: c function-pointers typedef

我试图了解以下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,意思是一个函数指针,不是吗?

4 个答案:

答案 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) {