是否可以在 va_list 中包含函数的第一个参数?我想将参数从一个函数传递给另一个函数。
int main(){
test(1,2,3,4,5,-1);
}
void test(int firstArg, ...){
va_list va;
va_start(va, firstArg);
passFunction(va);
}
void passFunction(va_list va){
int x;
while((x = va_arg(ap,int))!=-1){
cout << x << endl;
}
}
我想要的输出:
1
2
3
4
5
实际输出:
2
3
4
5
有没有办法在不显式地将第一个参数传递给函数的情况下实现这一点?
最佳答案
我知道这是一个老问题,但我最近遇到了它,并认为我会分享我的解决方案。无论编译器如何,这个答案都应该有效,但会添加更多代码。我在 while 语句中使用了第一个参数,但在使用完第一个参数之前我不会调用 va_arg()。
main () {
test( 1, 2, 3, 4, 5, -1 );
}
void passFunction( int one, va_list va )
{
int x = one;
va_list va_copy;
va_copy( va_copy, va );
while (x != -1)
{
std::cout << x << std::endl;
x = va_arg( va_copy, int );
}
va_end( va_copy );
}
void test( int one, ... ) const
{
va_list va;
va_start(va,one);
passFunction( one, va );
va_end(va);
}
关于c++ - 在 va_list 对象中包含第一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38023473/