假设我有一个像这样的宏
#define A(x) NSLog(@"%@", x)
如何调用它并在宏参数中格式化字符串,如此
A([NSString stringWithFormat:@"Random string with number %d", 5]);
我收到错误too many arguments provided to function-like macro invocation
并且错误标记指向逗号,这是有意义的,因为我假设预处理器在那里拆分参数,因为它不知道它是一个选择器调用的上下文。甚至可以这样做吗?
答案 0 :(得分:2)
正如链接问题的答案所说,解决方案在于在呼叫站点使用额外的一对paranthese:
A(([NSString stringWithFormat:@"Random string with number %d", 5]));
作品。