【问题标题】:What do ^() {} and ^{} mean in C++?^() {} 和 ^{} 在 C++ 中是什么意思?
【发布时间】:2019-11-26 00:38:50
【问题描述】:

我最近读了一些这样的 C++ 代码:

setData(total, &user, ^() {
  struct dst_t to = {ip, port};
  sendData(to, data);
});


getData(total, ^{
  recvData(data, NULL);
});

我从未见过^() {}^{}。他们的意思是什么?某种匿名函数?

【问题讨论】:

标签: c++


【解决方案1】:

很难找到带有^() {} 符号的重复项,所以我会发布一个答案。

这些是“块”,它是一个 clang 编译器扩展,可以创建类似 lambda 的闭包。

更多信息请访问wikiclangs Language Specification for Blocks

当参数列表为空时,(void)可以省略,^ { recvData(data, NULL); }^ void (void) { recvData(data, NULL); }相同。

【讨论】:

  • 请注意,虽然它们在 C 和 C++ 代码中工作,但它们主要是围绕 Objective-C 世界设计的,如果你使用 C++,你几乎肯定应该使用更惯用的 lambda 和 std ::function 而不是这些(尽管请注意std::function can hold blocks
猜你喜欢
  • 2012-04-14
  • 2013-03-09
  • 2011-07-07
  • 2012-12-11
  • 2016-12-08
  • 2016-04-19
  • 2015-04-11
  • 2012-04-25
  • 2011-08-25
相关资源
最近更新 更多