ios - Objective-C 中反斜杠 (\) 字符的使用

标签 ios objective-c

最近我遇到了这个用于创建单例实例的宏。

#if __has_feature(objc_arc) // ARC Version

#define SYNTHESIZE_SINGLETON_FOR_CLASS(classname)   \
\
+ (classname *)sharedInstance\
{\
static classname *shared##classname = nil;\
static dispatch_once_t onceToken;\
dispatch_once(&onceToken, ^{\
shared##classname = [[self alloc] init];\
});\
return shared##classname;\
}

谁能告诉我每一行中的反斜杠字符有什么用。它有什么好处?

这里的##字符有什么用?

最佳答案

转义每行末尾的换行符,并允许像这样的复杂宏保持可读性。

C 预处理器宏必须在单行上定义(即以换行符终止),因此长宏需要使用反斜杠来转义中间换行符。

顺便说一句,您会在 Makefile 中看到类似的内容。

关于ios - Objective-C 中反斜杠 (\) 字符的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24506695/

相关文章:

ios - 如何在 ViewController 顶部设置标题

ios - 我们可以在不应用 masktobounds 的情况下实现圆角吗

ios - 快速返回时显示顶部 View

objective-c - RestKit请求模拟

objective-c - 打印文件中最常用的单词(字符串)Objective-C

ios - IPAD AIR iOS 8.0.2 版本设备的 Facebook 分享不显示初始文本

ios - 从 Model.xcdatamodeld 获取所有实体

ios - 如何在钥匙串(keychain) iOS 中保存 UUID?

ios - 在 View Controller Containment 中保留对 Parent 的引用

iphone - 集成Google API目标库客户端库时的链接器错误