小编sma*_*egg的帖子

一个奇怪的使用typedef

我之前从未在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)
是两个完全不同的东西.

c++ typedef

6
推荐指数
1
解决办法
533
查看次数

标签 统计

c++ ×1

typedef ×1