作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题 15.4:varargs/varargs1.html
在示例代码中,他们似乎认为如果到达列表末尾,则 va_arg
返回 NULL
:
len = strlen(first);
va_start(argp, first);
while((p = va_arg(argp, char *)) != NULL)
len += strlen(p);
va_end(argp);
但是 va_arg
的文档明确指出情况并非如此,并且 va_arg
会很高兴地越过列表的末尾。
这与我尝试模仿上述代码并因此出现段错误的经验一致。
最佳答案
事实上,va_arg
没有提到在列表的第 nd 处返回 NULL
。
If there is no next argument, or if type is not compatible with the type of the actual next argument (as promoted according to the default argument promotions), random errors will occur.
但常见问题解答说:
A call to vstrcat looks something like
char *str = vstrcat("Hello, ", "world!", (char *)NULL);
这意味着他们假设调用者将传递 NULL
作为最后一个参数来表示列表结束。
关于c - comp.lang.c 常见问题解答中有错误?计算可变格式字符串的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6479621/
我是一名优秀的程序员,十分优秀!