gpt4 book ai didi

objective-c - 自定义日志记录宏不接受多个参数

转载 作者:行者123 更新时间:2023-12-03 17:42:16 26 4
gpt4 key购买 nike

我制作了一个自定义日志记录类,将某些内容记录到文件中。我正在尝试创建一个宏,以便可以像 NSLog() 一样使用我的自定义类,但它似乎无法正常工作。

以下是我定义宏的方式:

#define ECLog(fmt, ...) [ECLogger logText:fmt, ## __VA_ARGS__]

logText: 声明如下:

+ (void)logText:(NSString *)theString;

如果我只传递一个参数,它就可以正常工作。像这样:

ECLog(@"test");

但是如果我传递另一个参数,如下所示:

ECLog(@"test %@",someString);

我收到一个错误,它只需要一个参数。

有什么想法吗?

最佳答案

不,警告是关于方法调用的。该错误似乎与宏有关,因为您在预处理器处理代码之前查看代码,但编译器指向同一行,即后处理。

您已声明此方法接受一个参数,但您传递的参数不止于此。

ECLog(@"test %@", someString);

被预处理器重写为:

[ECLogger logText:@"test %@", someString];

这是现在传递给编译器的文字文本,就像您自己这样输入一样。该方法被声明为采用单个 NSString,但您向它传递了两个东西。您需要更改方法的声明:

+ (void) logText: (NSString *)theString, ...; 

关于objective-c - 自定义日志记录宏不接受多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9797515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com