我最近在处理C代码时偶然发现了这个奇怪的想法。
我已经写的函数返回一个双和作为参数取在指针到功能和一定数量的参数,即是否可以编写一个函数,该函数返回一个指向与其参数中的函数不同的函数的指针?
double template_1(double (*)(double),...);
此功能正确地识别真正的功能的特定属性
double f(double);
表示为template_1
中的指针,以使template_1
对我可能插入的每个实际函数有效。
现在我不得不写另一个功能,让它成为:在参数˚F
double derivative(double (*)(double),double);
double derivative(double (*f)(double),double x){
double epsilon = ...;
return (f(x+epsilon)-f(x-epsilon))/(2.0*epsilon);
}
再次使其成为每˚F工作。 我的问题是:因为我想在template_1
中使用derivative
而不修改它,是否可以编写一个函数,该函数需要派生并吐出一些形式为double (*)(double)
的东西?
我的想法是定义typedef double (*real_function)(double);
然后定义
real_function g(double (*derivative)(double (*)(double),double))
,我想它吐出来是这样的:double derivative_2(double x)
;所以我可以直接在template_1 argument
中定义类似g(derivative) = double (*h)(double);
之类的东西,遗憾的是我并不知道如何完成这项工作,或者即使它可以工作。
只有在已经定义了这个返回函数的情况下才有可能。不,你不能在运行时“定义”功能。你必须切换到一些函数式语言,例如Haskell或Lisp。 –
在C运行时没有(便携)方式创建函数。 –
@EugeneSh。大多数语言,而不仅仅是功能语言,支持这种(至少以某种形式) - 例如C++,java,go。 –