C 代码的泛化

C 代码的泛化,c,rtos,generalization,C,Rtos,Generalization,我正在做一个小型实时操作系统项目,遇到了一个小问题 void printOutput(void) { Log_info2("Fib(%d) = %d", FIB_N , cur) ; System_printf("Fib(%d) = %d", FIB_N ,

我正在做一个小型实时操作系统项目,遇到了一个小问题

void printOutput(void)                                       
{                                                             
   Log_info2("Fib(%d) = %d", FIB_N , cur) ;               
   System_printf("Fib(%d) = %d", FIB_N , cur) ;                   
   System_flush() ;                                                            
}
正如您所见,此函数使用完全相同的参数调用Log和printf函数。 我的问题是-有没有办法让这段代码更通用

我很感激你的想法。
谢谢

您可能只需要稍微简化一下即可

void printOutput(void)                                       
{
   char const* format = "Fib(%d) = %d";
   Log_info2(format, FIB_N , cur);
   System_printf(format, FIB_N , cur) ;
   System_flush();
}
进一步简化以减少代码重复

void printOutput(void)
{
   char message[200];  // Make it large enough for your neeeds.
   sprintf(message, "Fib(%d) = %d", FIB_N , cur);

   Log_info2(message);
   System_printf(message) ;
   System_flush();
}

它是什么意思-一般化的?有一个同时调用
Log\u info2
System\u printf
(和
System\u flush
?)的函数可能合适,也可能不合适?@Ry-这是一个同时调用Log和printf的函数。@Jadenkun:我的意思是一个只转发其参数的函数。或者甚至是一个宏,如果您对varargs宏没意见的话。@Ry-我不介意使用宏,但这并不能解决使用相同参数调用Log和printf的问题,是吗?因此无法避免复制传递给这两个函数的参数?@Jadenkun,你的意思是想办法避免两次使用
FIB\u N
cur
?我也考虑过这个问题。我想这是最好的解决办法。谢谢
#定义超级日志(fmt,…)LogInfo2(fmt,uu VA_uargs);系统打印(fmt、VA、ARGS);系统_flush()