C“函数指针”typedef没有星号?

时间:2011-07-06 18:22:27

标签: c function-pointers typedef

  

可能重复:
  what does this typedef mean? a function prototype ?

今天我遇到了这种语法

typedef double (d2d)(double);

cdecl tells me它是一个返回double的函数(而不是指向返回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函数指针的“通常”方式之间的细微差别是什么?

0 个答案:

没有答案