【发布时间】:2020-06-05 09:40:29
【问题描述】:
我正在尝试使用可变数量的参数进行嵌套函数调用,而不检索它们。我得到了错误的结果。
这是我的简单 c++ 程序:
extern "C" {
#include <stdio.h>
}
#include <cstdarg>
class ctty {
public:
ctty();
int logger(int prior, const char* format, ...);
private:
};
ctty::ctty(){};
int ctty::logger(int prior, const char* format, ...)
{
va_list ap;
va_start(ap,format);
printf(format, ap);
va_end(ap);
return 0;
}
int main(int argc, char** argv)
{
ctty tty;
tty.logger(0, "Test %d %d %d\n", 7, 5, 5);
return 0;
}
结果:
Test -205200 7 5
我期待一个结果
Test 7 5 5
我不明白我做错了什么? 提前致谢。
【问题讨论】:
-
请提供更详细的信息,说明您的期望和结果的差异。别人的代码很难读懂,很多类型和功能都不清楚
-
是什么让您认为可以将
va_list传递给printf?看看en.cppreference.com/w/cpp/io/c/vfprintf。 -
extern "C" { }围绕标准库包含显然是错误的。我怀疑这是否合法。