On Jun 26, 2010, at 6:38 PM, Matt Neuburg wrote: > The docs say: "There are two further restrictions on __block variables: they > cannot be variable length arrays, and cannot be structures that contain C99 > variable-length arrays." > > This would seem to imply that a __block variable *can* be a *fixed* length > array. But when I try to write into such an array inside a block, I get a > compile error, "cannot access __block variable of array type inside block." > > Who's mistaken, the compiler or the docs? Thx - m.
Neither. The issue is that a block array in C is, technically, sorta-kinda variable length unless you do something to make it fixed length. I don't remember the exact details beyond that it is a subtle edge case. That something is typically to encapsulate it into a Struct. This: void foo() { char barfy[100]; ^() { char b = barfy[0]; <<<< error: cannot access copied-in variable of array type inside block b = b; }; } This compiles just fine: void bar() { struct angus { char barfy[100]; } kangus; ^() { char b = kangus.barfy[0]; b = b; }; } b.bum _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com