C代码中重复的函数定义-原因是什么?

C代码中重复的函数定义-原因是什么?,c,function,microcontroller,C,Function,Microcontroller,在分析一个微控制器项目时,我偶然发现了一些我无法解释的代码气味 有两个功能完全相同。这两个函数在状态机中被多次调用。我想知道为什么有人复制并重命名了一个函数,只是为了从不同的代码位置调用它 函数称为timerfunction\u display\u处理程序和temp\u timerfunction\u display\u处理程序,如下所示 static void timerfunction_display_handler(uint8_t i) { if(tommy_context[

在分析一个微控制器项目时,我偶然发现了一些我无法解释的代码气味

有两个功能完全相同。这两个函数在状态机中被多次调用。我想知道为什么有人复制并重命名了一个函数,只是为了从不同的代码位置调用它

函数称为timerfunction\u display\u处理程序和temp\u timerfunction\u display\u处理程序,如下所示

 static void timerfunction_display_handler(uint8_t i)
 {
     if(tommy_context[i].step == WARMING_STEP)
     {
       if(general_context.config_value[TEMP_STEP_SWITCH] == 2)
       {
         cleaning_handler_temp_no_blink(i);    
       }

       else
       {
         cleaning_handler_step_no_blink(i);
       }
     }

     /*normal cooking*/
     else if(tommy_context[i].step <= MAX_COOKING_STEP)
         {
       set_tommy_led(NOTHING,secure_context[i].cooking_step,NOTHING,1u,i,(i+1u)%2u,i);
         }

     else
     {
       set_tommy_led(NOTHING,P,NOTHING,1u,i,(i+1u)%2u,i);
     }
 }

static void temp_timerfunction_display_handler(uint8_t i)
{
// same code as code
}
static void timerfunction\u display\u处理程序(uint8\u ti)
{
if(tommy\u context[i].step==WARMING\u step)
{
if(常规上下文配置值[临时步骤开关]==2)
{
清洁处理器温度无闪烁(i);
}
其他的
{
清洁处理器步骤无闪烁(i);
}
}
/*正常烹饪*/

else if(tommy_context[i]。步骤代码可能是由一个代码生成器生成的,该生成器不够聪明,无法避免重复的函数。由于第二个on被称为
temp
,它通常表示临时,我猜想它在某个时候已经被实现以进行调试(此时内容可能有所不同),在某一点上,它已经被遗忘,只是停留在那里。你可能应该询问代码的提供者,也许这只是代码气味。我看不出有任何原因,除非两个函数的预处理器符号不同,但这也会是代码气味。它们在同一个C文件中吗?可能只是复制和粘贴错误按照@Jabberwocky所说的,以更可读的方式重新排列源代码。-这就是问题中的代码吗?第二个函数定义是否紧跟在同一个C文件中的另一个函数定义之后?代码可能是由一个代码生成器生成的,它不够聪明,无法避免重复的函数。因为第二个被称为
temp
,通常代表临时,我猜它在某个时候已经被实现用于调试(此时内容可能不同),在某一点上,它已经被遗忘,只是停留在那里。你可能应该询问代码的提供者,也许这只是代码气味。我看不出有任何原因,除非两个函数的预处理器符号不同,但这也会是代码气味。它们在同一个C文件中吗?可能只是复制和粘贴错误按照@Jabberwocky所说的,以更可读的方式重新排列源代码。-这就是问题中的代码吗?在同一个C文件中,第二个函数定义紧跟在另一个之后吗?