gpt4 book ai didi

c - 将代码作为函数参数传递,而不是声明回调

转载 作者:太空宇宙 更新时间:2023-11-04 06:40:05 24 4
gpt4 key购买 nike

我认为像 JS 这样的一些较新的语言可以在本地执行此操作,但我忘记了它的术语(内联“临时”函数只是为了作为回调传递)

我想做的是...

我正在编写单元测试,在编译时设置预期的输入和输出消息。稍后在运行时,我想在接收到每个输出或处理完输入时进行一些检查,因此我为回调函数添加了一个参数。

工作正常,我可以离开它并继续前进,但是......我只是好奇......

有时一个函数是多余的,我只需要一个比较;有时一小段代码就可以了。也许我可以在运行时将它们评估为零/非零值?但是如何作为参数传递呢?

目前我的函数具有以下签名

void AddExpectedCommand(E_peripheralType peripheral, 
communicationBlock_t commandBlock,
errorMessage_t errorMessage,
void *(*DoRunTimeChecks)(E_boolean));

最后一个参数是指向返回 bool 值的回调函数的指针。

有什么方法可以将代码表达式作为参数传递?

或者某个函数看起来“更干净”?

在此先感谢您的帮助...


更新:糟糕,我的声明有误。我想传递一个指针,这样一个函数没有参数并返回一个 e_Boolean ...我该怎么做?

最佳答案

使用 C++11,您可以执行以下操作:

接受一个返回 bool 值的函数的函数:

 void f(function<bool()>);

用捕获局部变量的 lambda 调用它:

 int x = ...;

f([&x]() { return (x > 2); });

或者用一些返回 bool 值的函数 g 调用它:

bool g();


f(g);

或者绑定(bind)一些接受 int 并返回 bool 的函数 h:

bool h(int x);


f(bind(h, 2)); // ie creates a nullary function from h(2)

关于c - 将代码作为函数参数传递,而不是声明回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9848680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com