我想定义一个宏来调用以下内容,这可能吗? 我也希望它接受格式字符串。
- (void)logString:(NSString *)string withLogLogLevel:(LogLevel)logLevel
{
// Sav log to file
}
DLog("text");
[Logger logString:text withLogLevel:LogLevelDebug];
ILog("text");
[Logger logString:text withLogLevel:LogLevelInfo];
ELog("text");
[Logger logString:text withLogLevel:LogLevelInfo];
答案 0 :(得分:10)
假设logString:withLogLevel:
除了日志级别之外还接受一个字符串参数,这应该是可能的:
#define DLog(x) [Logger logString:(x) withLogLevel:LogLevelDebug]
请注意宏参数周围的括号,在使用复合表达式调用宏时非常有用。
假设记录器需要NSString
个对象,而不是C字符串,你应该像这样使用宏:
DLOG(@ “文本”);
然而,在这种情况下,不清楚为什么人们更喜欢宏来进行简单的函数调用:
void DLog(NSString *str) {
[Logger logString:str withLogLevel:LogLevelDebug];
}