很抱歉这个简单的问题,但是我如何创建具有未定义数量参数的 C 函数,例如
int printf ( const char * format, ... ).
我想创建函数以将其用作 printk 的包装器:
void my_printk( const char * format, ...)
{
printk("my log:");
printk(format, ...);
printk("\n");
}
谢谢
最佳答案
您必须先将 args 转换为 va_list,然后才能将其传递给另一个函数。然后您可以将它传递给函数的“v”版本。
所以你可以这样做:
void my_printk( const char * format, ...)
{
va_list ap;
va_start(ap, format);
printk("my log:");
vprintk(format, ap);
printk("\n");
va_end(ap);
}
大多数时候,像这样的任何函数都会提供“v”版本,您的也应该:
void my_vprintk( const char * format, va_list ap)
{
printk("my log:");
vprintk(format, ap);
printk("\n");
}
void my_printk( const char * format, ...)
{
va_list ap;
va_start(ap, format);
my_vprintk(format, ap);
va_end(ap);
}
关于创建函数 foo(...) 的 C 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5613436/