一个函数名可以直接做为另一个函数的参数吗?解决思路
一个函数名可以直接做为另一个函数的参数吗?
有这个一句代码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);是一种什么调用方法呢
字符串而已。
函数名能直接作为另一个函数的参数吗
可以,地址调用。
------解决方案--------------------
可以函数指针
------解决方案--------------------
当然可以,函数名就是一个字符串,也代表了函数的地址
------解决方案--------------------
呵呵 显然可以, 回调函数都是这么用的
有这个一句代码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);是一种什么调用方法呢
字符串而已。
函数名能直接作为另一个函数的参数吗
可以,地址调用。
------解决方案--------------------
可以函数指针
------解决方案--------------------
当然可以,函数名就是一个字符串,也代表了函数的地址
------解决方案--------------------
呵呵 显然可以, 回调函数都是这么用的