如何使用typedef声明函数指针

时间:2015-03-24 06:33:51

标签: c

typedef int SERVER_DISPATCH(struct _SERVER_OBJECT *pSerObj,int val);
typedef SERVER_DISPATCH *PSERVER_DISPATCH;

typedef int (*SERVER_DISPATCH)(struct _SERVER_OBJECT *pSerObj,int val);
typedef SERVER_DISPATCH PSERVER_DISPATCH;

我正在尝试使用typedef创建函数指针,上面两种类型的声明类似?任何人都可以详细解释一下吗?

4 个答案:

答案 0 :(得分:4)

typedef int SERVER_DISPATCH(struct _SERVER_OBJECT *pSerObj,int val);
typedef SERVER_DISPATCH *PSERVER_DISPATCH;

SERVER_DISPATCH是一个返回int的函数。

PSERVER_DISPATCH是指向SERVER_DISPATCH的指针:所以它是一个指向返回int的函数的指针。

typedef int (*SERVER_DISPATCH)(struct _SERVER_OBJECT *pSerObj,int val);
typedef SERVER_DISPATCH PSERVER_DISPATCH;

SERVER_DISPATCH是一个返回int的函数的指针。

PSERVER_DISPATCHSERVER_DISPATCH:所以它是一个指向返回int的函数的指针。

在这两种情况下PSERVER_DISPATCH都是一样的。 SERVER_DISPATCH不同。

答案 1 :(得分:0)

I think this is the process:

int function (int i)
{ 
return (i + 1);
}

typedef int (*fp)(int);  // Declare typedef

fp func = &function; // Define function-pointer variable, and initialize

int value = func(3);     // Call function through pointer

答案 2 :(得分:0)

这两个版本都是不必要的复杂写作方式:

typedef int (*PSERVER_DISPATCH)(struct _SERVER_OBJECT *pSerObj,int val);

为什么你需要你的例子中的SERVER_DISPATCH类型,我不知道。看起来像一个从来没有被程序实际使用的无意义类型。

答案 3 :(得分:0)

typedef 用于简化代码的读取 - 特别是对于函数或结构名称的指针。

typedef int myinteger;
typedef char *mystring;
typedef void (*myfunction)();

使用它们

myinteger i;  
mystring s;
myfunction f;