块 (C语言扩展) 块blocks是由LLVM提出的类似于lambda表达式的非标准C语言扩展亦可以应用于ObjectiveC与C中它的语法类似于这些函数中的闭包即由大括号包括的语句块 苹果设计块的一个目的是使设计基于Grand Central Dispatch线程结构的程序更容易但块是独立于这一构架的它也可以在其它程序中以与普通语句块十分相似的方式应用苹果已经在苹果修改版的GCC编译器以及Clang LLVM编译器前端中实现了这一特性同时LLVM计划包括了支持块特性的运行时库 与函数定义类似块可以有参数也可以在其内部声明私有变量与普通的C函数定义不同块可以使用其上文中定义的变量一个块定义会产生一个不透明的值该值同时包括了块内代码的引用和定义时栈内局部变量的快照而非调用时块可以在定义后被调用其行为与函数指针相同块可以如同函数指针一般被赋值到变量中作为函数的参数传递但若块需要在其被定义的范围之外被使用时程序员或API需要将该块用特别的运算符Blockcopy标记 在定义块之后块内的代码可以在任何时间被调用语法与调用函数相同