zoukankan      html  css  js  c++  java
  • OC_block_0x01

    block是包含自变量的匿名函数

    0x01.无参数block

    int main ()

    {

      void (^blk)(void) = ^{printf("Block ");}

      blk();

      return 0;

    }

    clang -rewrite-objec oc的m文件

    struct __block_impl {

      void *isa;

      int Flags;

      int Reserved;

      void *FuncPtr;

    }

    struct __main_block_impl_0 {

      struct __block_impl impl;

      struct __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 struct __main_block_func_0 (struct __main_block_impl_0 *__cself) {

      printf("Block ");

    }

    static struct __main_block_desc_0 {

      size_t reserved;

      size_t Block_size;

    } __main_block_desc_0_DATA = { 0, sizeof(struct __main_block_impl_0)};

    int main ()

    {

      void (*blk)(void) = ((void(*)())&__main_block_impl_0((void *)__main_block_func_0, &__main_block_desc_0_DATA));

      ((void(*)(__block_impl *))((__block_impl *)blk)->FuncPtr)((__block_impl *)blk);

      return 0;

    }

  • 相关阅读:
    NOI2021 题解
    CF605E Intergalaxy Trips
    P4762 [CERC2014]Virus synthesis
    特征向量与特征值
    uoj
    NOI 2021
    [NOI2011] NOI 嘉年华 【DP】
    CF1264D(组合数)
    绝对不咕
    题解 SP11985 【GOT
  • 原文地址:https://www.cnblogs.com/fkunlam/p/4906268.html
Copyright © 2011-2022 走看看