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()代码>