【问题标题】:Xcode compiler errors when using ##__VA_ARGS__使用 ##__VA_ARGS__ 时的 Xcode 编译器错误
【发布时间】:2017-04-18 03:08:49
【问题描述】:

这是我自定义的 NSLog。

#define NSLog(fmt, ...) printf("????????????%s,%d\n %s\n\n", __PRETTY_FUNCTION__, __LINE__, [NSString stringWithFormat:fmt, ##__VA_ARGS__].UTF8String)

此日志在另一个项目上运行良好,但在当前项目中编译时出现 4 错误。如果使用__VA_ARGS__,如#define NSLog(...) NSLog(__VA_ARGS__),它将编译成功。我认为这可能是由Building Setting 引起的。

谁有办法帮我解决这个问题。

【问题讨论】:

    标签: ios objective-c xcode macros variadic


    【解决方案1】:

    检查声明此的头文件是否导入 Foundation。检查您是否也没有在其他地方定义 NSLog,最后,重新定义 NSLog 真的不是一个好主意。您可能最好采用日志框架或像这样定义自己的:

    #define MELog(fmt, ...) NSLog("???%s,%d\n %s\ ....
    

    【讨论】:

    • 覆盖NSLog的标头必须始终包含在框架(系统)标头之后,否则会污染框架的编译。一些框架是用 C 语言编写的,[NSString stringWithFormat] 在那里不起作用。这解释了错误消息。
    猜你喜欢
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多