我尝试将变量参数列表传递给另一个函数。已经存在一个非常相似的问题:How to pass variable number of arguments to printf/sprintf 但对我来说它不起作用。我不知道为什么。这是我的功能:
void printSyslogNotice(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
#ifdef __XENO__
rt_syslog(LOG_NOTICE, fmt, ap);
#else
syslog(LOG_NOTICE, fmt, ap);
#endif
va_end(ap);
}
当我打电话给:
printSyslogNotice("%s %i", "hello world", 5);
我得到了这个输出:#010 -939524064
毋庸置疑,我想这个输出:hello world 5
有人有想法吗?
答案 0 :(得分:4)
您应该使用vsyslog
,而不是syslog
。 syslog
收到变量参数包,但不是va_list
。如果您想调用syslog
,则应按原样传递参数,而不是va_list
。