首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确使用__VA_ARGS__

如何正确使用__VA_ARGS__
EN

Stack Overflow用户
提问于 2014-02-19 07:19:23
回答 1查看 755关注 0票数 1

我对VLog的定义如下:

代码语言:javascript
复制
#define VLog(s, ...)  NSLog(@"%@", [NSString stringWithFormat:(s), ##__VA_ARGS__])

我知道VLog(@"hello,%d%@", 1, @"a"); __VA_ARGS__被1,@"a“取代。

然而,VLog(@"hello"); __VA_ARGS__被替换为什么?

如果我这样定义VLog:

代码语言:javascript
复制
//delete ##
#define VLog(s, ...)  NSLog(@"%@", [NSString stringWithFormat:(s), ##__VA_ARGS__])`

指出了VLog(@"123");的误差。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-19 08:03:46

在零变量参数的情况下,__VA_ARGS__将被替换为nothing。##很特殊,因为在这种情况下它删除了前面的,,所以编译器不会抱怨“逗号后面需要的表达式”。没有##定义的宏,即[NSString stringWithFormat:(s), __VA_ARGS__]需要额外的参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21873616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档