很抱歉这个简单的问题,但是如何创建具有未定义参数数量的C函数,例如
int printf ( const char * format, ... ).
Run Code Online (Sandbox Code Playgroud)
我想创建函数来使用它作为printk的包装器:
void my_printk( const char * format, ...)
{
printk("my log:");
printk(format, ...);
printk("\n");
}
Run Code Online (Sandbox Code Playgroud)
谢谢
您必须先将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);
}
Run Code Online (Sandbox Code Playgroud)
大多数时候,任何这样的函数都会提供'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);
}
Run Code Online (Sandbox Code Playgroud)