我最近了解到这是合法的C:
#include <stdio.h>
int foo(int bar(int))
{
return bar(42);
}
int bar(int x)
{
return x * 42;
}
int main()
{
printf("Baz = %d\n", foo(bar));
return 0;
}
编译时没有警告并按预期运行(编译并且即使作为C程序而不是C ++也能正常工作)
rep ~/Documents $ g++ -Wall test.cpp
rep ~/Documents $ ./a.out
Baz = 1764
rep ~/Documents $
为什么这种语法不经常使用甚至在任何地方使用?
答案 0 :(得分:-6)
也许是因为你可以在另一个函数中调用一个函数。这比作为参数的功能更清晰。虽然框架用于运行回调函数。我更喜欢来自另一个函数的函数作为普通开发人员。