首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个函数名可以直接做为另一个函数的参数吗?解决思路

2012-02-21 
一个函数名可以直接做为另一个函数的参数吗?有这个一句代码EXIT(processEvents)其中EXIT是宏定义的一个函

一个函数名可以直接做为另一个函数的参数吗?
有这个一句代码EXIT(processEvents);
其中EXIT是宏定义的一个函数,定义如下
#   define   EXIT(fcn)             traceExit   (__FILE__,   __LINE__,   #fcn)

参数processEvents也是一个函数
static   void   processEvents(AflcHandlerTestRingContext   *context_p)
{
    /*Stop   this   test   by   unloading   self*/
    afshUnloadHandler   (   context_p-> myHandlerId   );
}
请问,这里EXIT(processEvents);是一种什么调用方法呢
函数名能直接作为另一个函数的参数吗
谢谢大家了

[解决办法]
函数名能直接作为另一个函数的参数吗
===================================
能.

比如:
typedef double (*Func)(double); //函数指针: 返回double, 参数类型为double

void CallFunction(double x, Func f) //这个函数要求提供一个函数指针参数f
{
double result = 0;
result = f(x); //调用函数f
}

double f1(double x)
{
return x;
}

double f2(double x)
{
return x*x;
}

//使用函数指针
void UseFunction()
{
double x = 1;
CallFunction(x, f1); //传f1给CallFunction

CallFunction(x, f2); //传f2给CallFunction
}

这里函数名代表的是函数指针(地址).


[解决办法]
函数名代表函数的地址
如果另外一个函数的参数是一个指向函数的指针,那就需要一个函数来作参数
比如:
int fun1(int (*p)(int b),int a){};
int fun2(int c){};
那么:
可以这样用fun1(fun2,3);
[解决办法]
请问,这里EXIT(processEvents);是一种什么调用方法呢
字符串而已。
函数名能直接作为另一个函数的参数吗
可以,地址调用。
[解决办法]
可以函数指针
[解决办法]
当然可以,函数名就是一个字符串,也代表了函数的地址
[解决办法]
呵呵 显然可以, 回调函数都是这么用的

热点排行