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__]