如何转发可变参数? [英] How to forward variadic arguments ?
本文介绍了如何转发可变参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个函数:
std :: string va_string_format(const char * fmt_str,va_list args)
{
char * s = va_arg(args,char *); // args相同,s bad
return"" ;;
}
void printOut(const char * fmt_str,...)
{
va_list argptr;
va_start(argptr,fmt_str);
char * s = va_arg(argptr,char *); // s正确
std :: string formatted = va_string_format(fmt_str,argptr);
va_end(argptr);
}
我打电话给
printOut(" text:%s \ n",s);
va_string_format有错误的参数
解决方案
我有两个函数:
< pre class ="prettyprint"style =""> std :: string va_string_format(const char * fmt_str,va_list args)
{
char * s = va_arg(args,char *); // args the同样,糟糕的
返回"" ;;
}
void printOut(const char * fmt_str,...)
{
va_list argptr;
va_start(argptr,fmt_str);
char * s = va_arg(argptr,char *); //正确
std :: string formatted = va_string_format(fmt_str,argptr);
va_end(argptr);
}
我打电话给
printOut(" text:%s \ n",s);
va_string_format有错误的参数
尝试不用首先调用va_arg:
va_list argptr;
va_start(argptr,fmt_str);
// char * s = va_arg(argptr,char *); // s correct
std :: string formatted = va_string_format(fmt_str,argptr);
va_end(argptr);
- Wayne
I have tow functions:
std::string va_string_format(const char *fmt_str, va_list args) { char *s = va_arg(args, char*);//args the same, s bad return ""; } void printOut(const char *fmt_str, ...) { va_list argptr; va_start(argptr, fmt_str); char *s = va_arg(argptr, char*); //s correct std::string formatted = va_string_format(fmt_str, argptr); va_end(argptr); }
I call
printOut("text:%s\n",s);
va_string_format has bad arguments
解决方案
I have tow functions:
std::string va_string_format(const char *fmt_str, va_list args) { char *s = va_arg(args, char*);//args the same, s bad return ""; } void printOut(const char *fmt_str, ...) { va_list argptr; va_start(argptr, fmt_str); char *s = va_arg(argptr, char*); //s correct std::string formatted = va_string_format(fmt_str, argptr); va_end(argptr); }I call
printOut("text:%s\n",s);
va_string_format has bad argumentsTry it without calling va_arg first:
va_list argptr; va_start(argptr, fmt_str); //char *s = va_arg(argptr, char*); //s correct std::string formatted = va_string_format(fmt_str, argptr); va_end(argptr);- Wayne
这篇关于如何转发可变参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文