什么是C ++中的块?

时间:2012-09-04 19:27:11

标签: c++ objective-c objective-c-blocks

  

可能重复:
  What is (double (^)(int))foofoo

我尝试在Google和SO上搜索定义,我找到了使用它们但没有明确定义的示例。 “块”是指插入符号(^)。我发现它on a site where cdecl they described

(double (^)(int, long long )) foo

作为

  

cast foo into block(int, long long) returning double

我从来没有见过这个今天之前用过的符号。任何人都可以清楚地描述一个块是什么,并包含一个最小的工作示例吗?感谢。

1 个答案:

答案 0 :(得分:8)

Blocks是Apple的C(而不仅仅是Objective-C)语言的非标准扩展。他们意识到closures (lambda functions等,但是你称之为) - 基本上它们是未命名的类函数实体,包含可以调用的代码。它们便于编写例如事件驱动的代码,其中回调被彻底使用。