OS XC中int(*)(...)和int(^)(...)之间的区别?

瑞宾·卡宾(Reb.Cabin)

看一下在hello-world程序中stdlib.h扩展的定义,gcc -E例如,

int heapsort(void *, size_t, size_t,
     int (*)(const void *, const void *));

int heapsort_b(void *, size_t, size_t,
     int (^)(const void *, const void *)) __attribute__((availability(macosx,introduced=10.6)));

我不记得曾经见过类似的类型符号int(^)我还注意到_b第二个声明中后缀。快速谷歌搜索没有发现任何有用的信息(通常让我了解有关XOR运算符的信息,也称为^)。有人会乐于解释发生了什么吗?

苏尔坦

首先,这不是纯C语言。这是C语言的Apple扩展(请参阅LLVM模块),主要用于Objective-C中。

^表示块是闭包。

块的使用类似于函数指针,但是可以在适当的位置定义一个块,例如

void function() {
    void (^simpleBlock)(void) = ^{
       NSLog(@"This is a block");
    }

    simpleBlock();
}

整个概念相当复杂(堆栈上的块,堆上的块,捕获变量,使用块保留循环等),因此,如果您对此主题感兴趣,则应首先阅读Apple的官方文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

OS XC中的int(*)(...)和int(^)(...)之间的区别?

来自分类Dev

Int ...和Int []之间的区别

来自分类Dev

int * a和int * a = new int之间的区别

来自分类Dev

int * a和char * a之间的区别?

来自分类Dev

char []和int []之间的区别

来自分类Dev

MySQL中INT和UUID之间的区别

来自分类Dev

void(int)和void(*)(int)之间的区别

来自分类Dev

const int和int文字之间的区别

来自分类Dev

int和new int()之间的区别

来自分类Dev

类型之间的区别-C中的int *和int * [100]?

来自分类Dev

类型之间的区别-C中的int *和int * [100]?

来自分类Dev

size_type和int之间的区别

来自分类Dev

Int()和toInt()之间的快速区别

来自分类Dev

Int()和toInt()之间的快速区别

来自分类Dev

“ void main”和“ int main”之间的区别

来自分类Dev

int a [9]和a [3] [3]之间的区别

来自分类Dev

cython中的np.int,np.int_,int和np.int_t之间的区别?

来自分类Dev

Mac OS X和Linux中dd之间的区别

来自分类Dev

Seq [Int]和List [Int]之间的区别和转换

来自分类Dev

在Java中打印char和int数组之间的区别

来自分类Dev

C中的malloc和(int *)malloc之间的区别

来自分类Dev

int(* function)(int,int)和int * function(int,int)之间的区别

来自分类Dev

0,int()和int {}之间有什么区别?

来自分类Dev

“ List <int> [,]”和“ List <List <int >>”之间的区别

来自分类Dev

((int)a)和(int(a))之间有什么区别?

来自分类Dev

seq <int>和array <int>之间的Dafny区别

来自分类Dev

array <int,5> b之间的区别;和int b [5];

来自分类Dev

“ int * a = new int”和“ int * a = new int()”之间有什么区别?

来自分类Dev

“ int * a = new int”和“ int * a = new int [5]”之间有什么区别?

Related 相关文章

  1. 1

    OS XC中的int(*)(...)和int(^)(...)之间的区别?

  2. 2

    Int ...和Int []之间的区别

  3. 3

    int * a和int * a = new int之间的区别

  4. 4

    int * a和char * a之间的区别?

  5. 5

    char []和int []之间的区别

  6. 6

    MySQL中INT和UUID之间的区别

  7. 7

    void(int)和void(*)(int)之间的区别

  8. 8

    const int和int文字之间的区别

  9. 9

    int和new int()之间的区别

  10. 10

    类型之间的区别-C中的int *和int * [100]?

  11. 11

    类型之间的区别-C中的int *和int * [100]?

  12. 12

    size_type和int之间的区别

  13. 13

    Int()和toInt()之间的快速区别

  14. 14

    Int()和toInt()之间的快速区别

  15. 15

    “ void main”和“ int main”之间的区别

  16. 16

    int a [9]和a [3] [3]之间的区别

  17. 17

    cython中的np.int,np.int_,int和np.int_t之间的区别?

  18. 18

    Mac OS X和Linux中dd之间的区别

  19. 19

    Seq [Int]和List [Int]之间的区别和转换

  20. 20

    在Java中打印char和int数组之间的区别

  21. 21

    C中的malloc和(int *)malloc之间的区别

  22. 22

    int(* function)(int,int)和int * function(int,int)之间的区别

  23. 23

    0,int()和int {}之间有什么区别?

  24. 24

    “ List <int> [,]”和“ List <List <int >>”之间的区别

  25. 25

    ((int)a)和(int(a))之间有什么区别?

  26. 26

    seq <int>和array <int>之间的Dafny区别

  27. 27

    array <int,5> b之间的区别;和int b [5];

  28. 28

    “ int * a = new int”和“ int * a = new int()”之间有什么区别?

  29. 29

    “ int * a = new int”和“ int * a = new int [5]”之间有什么区别?

热门标签

归档