странное использование typedef

Я никогда раньше не видел грамматики в C ++, подобной этой:

typedef int (callback)(int);

что на самом деле это означает? Я просто обнаружил, что если я создаю оператор

  callback a;

, это очень похожий эффект к объявлению прямой функции.

ниже - это код, который я написал

#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;
}

Вы можете использовать

typedef int (*callback)(int);//this is very common to use

в этом коде, но если мы изменим его на

typedef int (callback)(int); //I'm puzzled by this !

, это также даст тот же результат!

и я знаю, что typedef int (* callback) (int) и typedef int (callback) (int)
- две совершенно разные вещи.

6
задан smartegg 26 September 2011 в 16:18
поделиться