Ios 使用变量宏Objective-C时出错

Ios 使用变量宏Objective-C时出错,ios,objective-c,macros,Ios,Objective C,Macros,我定义了以下宏: #define DSLog(x,...) [[DSLogger sharedInstance] Log:(x, __VA_ARGS__)] @interface DSLogger : NSObject + (instancetype)sharedInstance; - (void)Log:(NSString *)messageToLog,...; - (NSArray *)errorLogArray; @end 但是,当我使用它时,会出现很多“预期表达式”错误: DSLo

我定义了以下宏:

#define DSLog(x,...) [[DSLogger sharedInstance] Log:(x, __VA_ARGS__)]

@interface DSLogger : NSObject

+ (instancetype)sharedInstance;
- (void)Log:(NSString *)messageToLog,...;
- (NSArray *)errorLogArray;
@end
但是,当我使用它时,会出现很多“预期表达式”错误:

DSLog(@"setting dhcp to %ld", (long)dhcp);
表达式结果未使用&long到NSString的隐式转换为 不允许使用圆弧


你知道为什么会发生这种情况以及如何解决吗

宏中括起
Log
参数的括号似乎造成了混淆

尝试:


宏中的
Log
参数的括号似乎造成了混淆

尝试:


当然可以!编译器正试图将最后一个参数解释为字符串。我相信
##
也很重要。我通过使用函数而不是宏来解决这个问题。但我检查了这个解决方案,它是有效的。是的,当然!编译器正试图将最后一个参数解释为字符串。我相信
##
也很重要。我通过使用函数而不是宏来解决这个问题。但我检查了这个解决方案,它是有效的。
#define DSLog(x,...) [[DSLogger sharedInstance] Log:x, __VA_ARGS__]