由于逗号,采用NSString stringWithFormat的预处理器宏失败

时间:2017-12-29 19:56:04

标签: objective-c c-preprocessor

假设我有一个像这样的宏

#define A(x) NSLog(@"%@", x)

如何调用它并在宏参数中格式化字符串,如此

A([NSString stringWithFormat:@"Random string with number %d", 5]);

我收到错误too many arguments provided to function-like macro invocation并且错误标记指向逗号,这是有意义的,因为我假设预处理器在那里拆分参数,因为它不知道它是一个选择器调用的上下文。甚至可以这样做吗?

1 个答案:

答案 0 :(得分:2)

正如链接问题的答案所说,解决方案在于在呼叫站点使用额外的一对paranthese:

A(([NSString stringWithFormat:@"Random string with number %d", 5]));

作品。