我想转换
typedef double (*Function)(double s[4]);
double f1 (double x[N]) {return x[0]*x[1];}
Function t = f1;
类似的东西:
typedef double (*Function)(double s[4]);
Function t = ({ return x[0]*x[1];});
其返回"0";无效值没有被忽略,因为它应该是"无效";错误我怎样才能做到这一点?
C没有匿名函数或lambda表达式。所以这是不可能的。
编辑:PSEUDO LAMBDA
允许嵌套函数的编译器的微小肮脏解决方法:
#define lmb(rt, fb)({rt fn__fn__fn_ fb fn__fn__fn_; })
int main(void)
{
double (*f)(double x[]) = lmb(double, (double x[]) { return x[0] * x[1]; });
double x[] = {4.0, 5.0};
printf("%fn", f(x));
}