相关疑难解决方法(0)

如何填写va_list

如果我有一个va_list,我知道如何提取它的所有元素:

void printInts(int n,...)
{
    va_list va;
    va_start(va, n);
    for(unsigned int i=0; i<n; i++)
    {
        int arg=va_arg(va, int);
        printf("%d",arg);
    }
    va_end(va);
} 
Run Code Online (Sandbox Code Playgroud)

因此,当我调用printInts(3,1,2,3)时,va_list将填充所有参数.
但是如何在不使用va_start的情况下手动填充va_list?我的意思是我想要这样的东西:

va_list va;
push_arg(va, int, 5); // And so on until I fill all parameters
...
Run Code Online (Sandbox Code Playgroud)

我需要这个,因为有一个函数接受va_list作为参数,我不知道如何填充其所有参数的va_list.

c variadic-functions

20
推荐指数
2
解决办法
2万
查看次数

动态创建va_list

我有一个功能

void foo(int cnt, va_list ap);
Run Code Online (Sandbox Code Playgroud)

我需要使用它,但要求非常严格,数量各va_list不相同,并且在运行期间会发生变化.我想做的是:

创建一个va_list(期望的char*)表单

QList<Contact*>
Run Code Online (Sandbox Code Playgroud)

哪里Contact是定义的类

class Contact
{
   public:
      QString getName();
   private: 
      QString m_name;

}; 
Run Code Online (Sandbox Code Playgroud)

我想在循环中填充va_list例如:

for (int idx = 0; idx<contacts.count(); idx++)
{
    contacts.at(idx)->getName(); // this i would like to pass to va_list

}
Run Code Online (Sandbox Code Playgroud)

有没有人知道我怎么能做到这一点?

c++ qt variadic-functions

16
推荐指数
3
解决办法
2万
查看次数

标签 统计

variadic-functions ×2

c ×1

c++ ×1

qt ×1