我创建了一个CLogger
目标C类,并在下面定义了宏:
#define CLogError(fmt, ...) [[CLogger defaultLogger] log:@"Error" format:(LOG_FORMAT fmt), [[NSString stringWithUTF8String:__FILE__] lastPathComponent], LINE, PRETTY_FUNCTION, ##__VA_ARGS__]
我可以访问目标C文件中的CLogError
并调用它。但是在swift文件中无法访问上面的宏。所以我创建了一个静态内联方法作为swift的包装器来间接调用宏。但是当我将参数传递给宏时,我在xcode中得到expected ')'
错误。如果我在宏中硬编码字符串,则同样有效。我在这里做错了吗?
static inline void logEvent(NSString* msg)
{
CLogError("Invalid Json");// it works
CLogError(@"nsstring");// it works
CLogError(msg);// didn't work
}
答案 0 :(得分:1)
#define CLogError(fmt, ...) [[CLogger defaultLogger] log:@"Error" format:(LOG_FORMAT fmt), [[NSString stringWithUTF8String:__FILE__] lastPathComponent], LINE, PRETTY_FUNCTION, ##__VA_ARGS__]
(LOG_FORMAT
看起来不应该存在。我想你只想要:
#define CLogError(fmt, ...) [[CLogger defaultLogger] log:@"Error" format:(fmt), [[NSString stringWithUTF8String:__FILE__] lastPathComponent], LINE, PRETTY_FUNCTION, ##__VA_ARGS__]