gpt4 book ai didi

c - 是否可以在 C 中将隐式函数作为函数指针传递?

转载 作者:行者123 更新时间:2023-12-02 08:42:48 25 4
gpt4 key购买 nike

最近我发现可以通过在函数调用中转换它来将隐式数组传递给函数

void foo(int* array);
foo((int[4]) {1,2,3,4});

但是,我想知道在将函数指针传递给函数时是否可以做同样的事情,比如:

void bar(void (*foobar)(void));
bar((void) {printf("foobar\n");});

那么有可能做到这一点吗?

我想知道的原因是,如果我有一大块可能具有特定循环结构的代码,但核心功能在实例之间发生变化,我不想让我的代码乱丢多个临时函数只是为了将它们传递给另一个函数。因此希望能够在参数中定义临时函数。

非常感谢

最佳答案

不,不是在标准 C 中。不过,您有两个非标准的替代方案:

一个。 GCC 的“嵌套函数”扩展(仅限 GCC):

void call(void (*fn)())
{
fn();
}

void somefunc()
{
void tmp_func()
{
printf("Hello world!\n");
}
call(tmp_func);
}

二、Apple的block(最近的GCC和Clang):

void call(void (^blk)())
{
blk();
}

call(^{
printf("Hello world!\n");
});

关于c - 是否可以在 C 中将隐式函数作为函数指针传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15044688/

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