2012-09-04 45 views
2

Possible Duplicate:
What is (double (^)(int))foofoo什麼是C++中的塊?

我試過在Google和SO上搜索一個定義,並且找到了使用它們但沒有明確定義的例子。 「塊」是指插入符號(^)。我發現它on a site where cdecl they described

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

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

我從來沒有見過一次這個符號在今天之前使用。任何人都可以清楚地描述一個塊是什麼,幷包含一個最小的工作示例?謝謝。

+3

這種'^'的使用不是標準C++的一部分。但是Objective C有塊;沒有檢查語法,但可能是這樣。 –

+3

這是C++/CLI中的一個託管指針。它不在C++中。 – chris

+1

@chris C++/CLI爲此目的使用插入符號,但這真的是在做什麼? – delnan

回答

8

Blocks是Apple對C(而不僅僅是Objective-C)語言的非標準擴展。他們認識到closures (lambda functions等等,但是你稱它們) - 基本上它們是未命名的函數類實體,包含可以調用的代碼。它們便於編寫例如事件驅動的代碼,其中回調被詳盡地使用。