我创建了一个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文件中访问。因此,我创建了一个静态内联方法作为包装器,以便迅速调用宏。但是,当我将参数传递给宏时,在xcode中出现了expected ')'错误。如果我在宏中硬编码字符串,则同样有效。我在这里做错什么吗?

static inline void logEvent(NSString* msg)
{
    CLogError("Invalid Json");// it works
    CLogError(@"nsstring");// it works

    CLogError(msg);// didn't work
}

最佳答案

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

关于objective-c - Xcode中预期的')'错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28313248/

10-10 20:40