kiz*_*zx2 12 c typedef function-pointers
可能重复:
这种typedef是什么意思?功能原型?
今天我遇到了这种语法
typedef double (d2d)(double);
Run Code Online (Sandbox Code Playgroud)
cdecl告诉我它是一个返回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;
}
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,GCC 4.2.1编译它没有问题.我只是想知道这和typedef
函数指针的"通常"方式之间的细微差别是什么?
归档时间: |
|
查看次数: |
476 次 |
最近记录: |