最近我发现,可以通过在函数调用铸造它传递一个隐含的阵列功能是否可以将隐式函数作为C中的函数指针传递?
void foo(int* array);
foo((int[4]) {1,2,3,4});
不过,我想知道,如果它传递功能时,有可能做同样的事情指向一个函数,所以像这样:
void bar(void (*foobar)(void));
bar((void) {printf("foobar\n");});
所以它甚至可以做到这一点?
我想知道的原因是,如果我有一大块可能具有特定循环结构的代码块,但实例之间的核心功能发生了变化,我不希望使用多个临时代码乱丢代码函数只是为了将它们传递给另一个函数。因此希望能够在参数中定义临时函数。
非常感谢
顺便第一种方法,有也是在这个答案的一些宏(和解释):http://stackoverflow.com/questions/10405436/anonymous-functions -using-gcc-statement-expressions - 更不用说这里稍微更坚果的版本了:http://en.wikipedia。org/wiki/Anonymous_function#C_lambda_expressions – slugonamission 2013-02-23 19:40:33
@slugonamission让我们不要用预处理器破解:) – 2013-02-23 19:40:49
够公平的:) - 当我为这个答案寻找答案时,我发现它们很有趣。我倾向于采取行如果你不明白的宏,你可能不应该在你的代码虽然:) – slugonamission 2013-02-23 19:43:00