【问题标题】:Give non-declared function to function pointer将未声明的函数赋予函数指针
【发布时间】:2018-02-14 04:07:15
【问题描述】:

我正在尝试理解函数指针的所有这些巨大的概念......

是否可以用未声明的函数来初始化函数指针?

例如,函数指针的简单用法是:

void f()
{
  printf("Hello world!");
}
//Somewhere in the program
void (*foo)();
foo = &f;

有没有办法跳过 f 的声明?类似的东西:

void (*foo)();
foo = { printf("Hello world!"); }

【问题讨论】:

  • C,没有。 C++ 有 lambdas 的概念,适合你想要做的事情。
  • 在 C 语言中,您需要将其设为命名函数(可能是 static,除非您打算从其他编译单元重用它)。
  • 在 C(以及 C++)中,您必须在使用之前声明一个名称。
  • 简答:C 不,C++ 是。
  • C# 也支持这个。

标签: c function function-pointers


【解决方案1】:

您所描述的称为lambda functions,这是C 中不可用的一种机制。您可以将lambda 函数视为匿名函数。

C++ 和 C# 支持这一点。阅读更多内容 .Function pointers, Closures, and Lambda

【讨论】:

  • 知道了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-24
  • 1970-01-01
  • 2013-03-16
  • 1970-01-01
  • 2018-11-11
  • 2020-04-13
相关资源
最近更新 更多