block的实质

Block是带有“自动变量值的匿名函数”。

Block省略了返回值和参数列表。

Block 实质栈上Block的结构体实例

Block源代码如下:

struct __block_impl { 

void *usa;

int Flags;

int Reserved;

void *FuncPtr;

}

struct __main)block_impl_0 {

struct __block_impl impl;

stryct __main_block_desc_0* Desc;

__main_block_impl_0(void *fp, struct __main_block_desc_0 *desc, int flags=0){

impl.isa = &_NSConcreteStackBlock;

impl.Flags = flags;

impl.FuncPtr = fp;

Desc = desc;

}

static void __main_block_func_0(struct __main_block_impl_0 *cself)

{

printf("Block\n");

}

static struct __main_block_desc_0{

unsigned long reserved;

unsigned long Block_size;

} __main_block_desc_0_DATA = {

0,

sizeof(struct __main_block_impl_0)

};

int main()

{
void (*blk)(void) = 

(void (*)(void)) &__main_block_impl_0(

(void *)__main_block_func_0, &__main_block_desc_0_DATA);

((vodi (*) (struct __block_impl *))

(struct _block_impl *)blk)->FuncPtr)((struct __block_impl *) blk);

return 0 ;

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值