Подтвердить что ты не робот

C "указатель функции" typedef без звездочки?

Возможный дубликат:
что означает этот typedef? прототип функции?

Сегодня я столкнулся с этим синтаксисом

typedef double (d2d)(double);

cdecl сообщает мне, что это функция, возвращающая двойной (в отличие от указателя на функцию, возвращающую double). Поэтому давайте посмотрим, как это работает:

#include <stdio.h>

typedef double (d2d)(double);
//typedef double (*d2d)(double); // the "usual" way

double twice(double x)
{
    return x * 2.0;
}

double apply(d2d f, double x)
{
    return f(x);
}


int main()
{
    printf("%f\n", apply(twice, 2.0)); // Prints 4.0000
    return 0;
}

Удивительно, что GCC 4.2.1 скомпилировал его без проблем. Мне просто интересно узнать, каковы тонкие различия между этим и "обычным" способом для typedef указателя функции?

4b9b3361