相关疑难解决方法(0)

将va_list或指针传递给va_list?

假设我有一个函数,它接受可变参数(...)或va_list从另一个这样的函数传递.主要逻辑是在这个函数本身(让我们调用它f1),但我想让它传递va_list给另一个函数(让我们调用它f2),它将确定下一个参数类型,使用它va_arg,并正确转换并存储它为呼叫者使用.

是否足以将va_list传递给f2,或者是否需要将指针传递给va_list.除非va_list需要是数组类型或者将其位置数据存储在va_list对象指向的位置(而不是在对象本身中),否则我无法看到如何通过值传递它可以允许调用函数(f1)为'看'被调用函数所做的更改va_arg.

任何人都可以阐明这一点吗?我对标准要求的内容感兴趣,而不是某些特定实现允许的内容.

c

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

varargs(va_list va_start)不适用于pass-by-reference参数

可能重复:
是否有使用带参考参数的varargs

嗨,我有一个varargs的问题.看看我的代码(Microsoft Visual Studio 2005或2008).

#include <stdarg.h>

struct Test { int a; };

void T1(int n, ...) {
 va_list args;
 va_start(args, n);
 char* p = va_arg(args, char*);
 va_end(args);
}

void T2(Test n, ...) {
 va_list args;
 va_start(args, n);
 char* p = va_arg(args, char*);
 va_end(args);
}

void T3(const Test& n, ...) {
 va_list args;
 va_start(args, n);
 char* p = va_arg(args, char*);  // p corrupt!!
 va_end(args);
}

int _tmain(int argc, _TCHAR* argv[]) {
 const Test t;
 T1(1, "Test1");
 T2(t, "Test2");
 T3(t, …
Run Code Online (Sandbox Code Playgroud)

c++ variadic-functions visual-c++

13
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

c++ ×1

variadic-functions ×1

visual-c++ ×1