正在初始化指向C中新函数的函数指针



我想转换

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));
}

相关内容

  • 没有找到相关文章

最新更新