最近我遇到了这个用于创建单例实例的宏。
#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/