2009-10-06 6 views

Répondre

7

C'est un cast de type bloc et oui, la syntaxe n'est pas géniale. Nous supposons que moreBlockFun est un bloc qui ne prend aucun paramètre, et renvoie quelque chose avec une distribution sensible à long long - cette signature de type est écrit long long (^)(). Nous créons donc un nouveau nom local pour ce bloc appelé blockFun, avec la syntaxe long long (^blockFun)(), et effectuons le cast.

C'est un désordre principalement hérité de la notation de type pointeur de fonction, qui pratiquement chaque programmeur C doit rechercher environ 482 fois avant de s'en souvenir. Tu n'es pas seul!

+1

ah ... génial. a du sens maintenant. Y a-t-il du sucre syntaxique qu'on pourrait saupoudrer sur tout cela pour le rendre plus lisible? – pxl

+1

Vous pouvez (et devez) introduire 'typedef's de sorte que vous pouvez écrire" FooBlock "ou similaire pour vous épargner le principal d'utiliser la signature complète à tous les points. –

+0

merci, fera – pxl