我创建了一个variadic方法的va_list版本:
+(void)myFunc:(NSString *)message args:(va_list)args;
并创建了调用上述函数
的宏TESTLOG
#define TESTLOG(x,...) [MyExample myFunc:(x), ##__VA_ARGS__]
问题是,当我尝试调用TESTLOG
宏时,我收到错误:
TESTLOG("test");
TESTLOG(@"test",@"test1");
预期表达
我如何解决这个问题?我尝试将args:(va_list)args
替换为...
它正在运行,但在我的情况下,我需要使用va_list和宏。
我认为我的问题在于宏中的定义。
答案 0 :(得分:1)
您不能将__VA_ARGS__
宏与va_list
参数一起使用。您的Objective-C方法需要定义为:
+ (void)myFunc:(NSString *)message, ... ;
然后您的宏可以是:
#define TESTLOG(x,...) [MyExample myFunc:(x), __VA_ARGS__]