我之前从未在c ++中看到过这样的语法:
typedef int (callback)(int);
Run Code Online (Sandbox Code Playgroud)
这究竟是什么意思?我只是发现如果我创建一个声明
callback a;
Run Code Online (Sandbox Code Playgroud)
它的效果与前向函数声明非常相似.
下面是我写的代码
#include<cstdio>
int callbackfunc(int i)
{
printf("%d\n",i);
return i*i;
}
// you can also use typedef int (callback)(int) here!
typedef int (*callback)(int);
void func(callback hook)
{
hook(hook(3));
}
int main()
{
func(callbackfunc);
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用
typedef int (*callback)(int);//this is very common to use
Run Code Online (Sandbox Code Playgroud)
在此代码中,但如果我们将其更改为
typedef int (callback)(int); //I'm puzzled by this !
Run Code Online (Sandbox Code Playgroud)
这也会得到相同的结果!
我知道typedef int (*callback)(int) 并且 typedef int (callback)(int)
是两个完全不同的东西.