objective-c - 在表达式开头使用脱字符 ^ 符号的预处理器宏

标签 objective-c syntax objective-c-blocks caret

查看此页面:http://www.mikeash.com/pyblog/friday-qa-2010-12-31-c-macro-tips-and-tricks.html

我发现这段代码带有 ^{ ... }() 语法,插入符号/方括号在做什么?

#define MAX(x, y) (^{ \
    int my_localx = (x); \
    int my_localy = (y); \
    return my_localx > my_localy ? (my_localx) : (my_localy); \
}())

它看起来像是在创建一个匿名函数之类的。这个概念叫什么?我在哪里可以阅读它?

最佳答案

这是一个C block 。它很像一个匿名函数(在使用中,而不是在结构中)。您可以在 Mike Ash 的网站和 Apple's documentation 中阅读更多关于它们的信息.

关于objective-c - 在表达式开头使用脱字符 ^ 符号的预处理器宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6852291/

相关文章:

ios - 将变量添加到 block

objective-c - 检查初始化方法的完成 block 内 Swift 变量的值

objective-c - 如何检测打印操作何时完成?

来自 iOS 应用程序的 PHP POST

ios - 无法将 NSString 从 kABBirthdayProperty 转换为 NSDate

javascript - es6 模板字符串 + 短对象文字转译失败 [gulp, babel]

objective-c - 无法将 NSSound 实例放入 NSMutableArray ion cocoa 中

c - long unsigned int 和 unsigned long int 有什么区别

MySQL查询总和结果除以行数(平均)

objective-c - 为什么要为 block 属性使用副本?