将参数列表从C ++类成员函数转发到ac函数(我正在创建的包装器)
不确定是否正确?看看argsPrinter里面的评论
// c++ a class function
void argsPrinter( const char *format , ... ){
//markFile(&mApiObj, format , ...); how to pass forward the ... to the c function
/*
va_list args;
va_start (args, format);
markFile(&mApiObj, format , args);
va_end(args);
*/
}
// c function
void markFile(someCustomApi* a, const char *format , ...)
{
FILE *file= fopen(a->somePath, "a");
if(file)
{
va_list args;
va_start (args, format);
vfprintf(file, format, args);
va_end (args);
fclose(file);
}
//else do nothing
}
编辑更改的实现,但是,如果不允许转发...,我可以考虑实现附加功能。
作为 markFile(&mApiObj, format , ...);
你不能 如果包含的库markFile
未提供markFileV
(类似于vsprintf
的对应库sprintf
),则根本不可能做到这一点。
既然您拥有C函数的源代码,则可以更改它。
顺便提一下(如果您对C代码有影响),这可能是简化的示例,但是为什么要markFile
首先将其格式化为缓冲区(PATH_MAX
所有字符都是char长!这与什么有什么关系)? ),然后使用fprintf
结果写出来?为什么不直接使用vfprintf
?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句