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创建函数指针,上面两种类型的声明类似?任何人都可以详细解释一下吗?
答案 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_DISPATCH
是SERVER_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;