gpt4 book ai didi

c++ - 将参数从可变参数函数转发到固定参数函数

转载 作者:行者123 更新时间:2023-11-28 03:50:49 25 4
gpt4 key购买 nike

我有一个函数,它接受可变数量的参数。从这个函数我想调用带有固定数量参数的函数,

void log(int level, const char* format, ...)
{
va_list args;
va_start(args, fmt);

int count = 0;
void *navigator[10] = NULL;

while ((navigator[count] = va_arg(args, char*) ) != NULL && count < 10)
++count; //Is this the right way to count no. of arguments passed ?


fprintf(stderr, "**** No of arguments : %d\n", count);
fflush(stderr);

switch (count - 2)
{
case 0:
log_l(level, fmt);
break;
case 1:
log_l1(level, fmt, navigator[0]); // how would I get arg1 here,
// I get NULL in the called function)*/
break;
.
.
.
.
.

};
}

我想知道计算传递的参数数量的正确方法,然后将它们正确转发给其他固定参数函数。

最佳答案

你的 va_start需要是 va_start(args, format); // Note change to "format" .

编辑:根据来自 va_arg 的联机帮助页,即使如此你不能做你想做的事。

If there is no actual next argument, or iftype is not compatible with the type of the actual next argument (as promoted according to the default argument pro- motions), the behavior is undefined.

但这被标记为 C++,所以为什么不使用 C++ 习惯用法:使用流和插入 operator<<而不是完全使用可变参数。

关于c++ - 将参数从可变参数函数转发到固定参数函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5569868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com