[英]comp.lang.c faq: Function that can return a pointer to a function of the same type
[英]Error in the comp.lang.c FAQ? Calculating the length of a variadically formatted string
问题 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
。
如果没有下一个参数,或者类型与实际下一个参数的类型不兼容(根据默认参数提升),则会发生随机错误。
但常见问题解答说:
对 vstrcat 的调用看起来像
char *str = vstrcat("Hello, ", "world!", (char *)NULL);
这意味着他们假设调用者将传递NULL
作为最后一个参数来表示列表的结束。
他们在调用 vstrcat() 时传递了一个 NULL 指针。
A call to vstrcat looks something like
char *str = vstrcat("Hello, ", "world!", (char *)NULL);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.