如何转发可变参数? [英] How to forward variadic arguments ?

查看:77
本文介绍了如何转发可变参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个函数:

 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 arguments

Try 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆