Warm tip: This article is reproduced from serverfault.com, please click

c-在FreeRTOS Tasks中实现功能是一个好习惯吗?

(c - Is it a good habit to implement functions inside FreeRTOS Tasks?)

发布于 2020-12-04 13:42:09

我是FreeRTOS和实时操作系统的新手。我想知道在FreeRTOS Tasks中实现函数是否是一种好的编程风格。例如

void displayTask(void* param) {

    static void Factorial (params) {
        // doSth
   }

   for(;;) {

       //call it here
       Factorial(params);
   }

}

还是只在Task外部实现它更好?因为在Case中我有很多功能,很难读取我猜到的代码。

Questioner
unkown53
Viewed
0
Clifford 2020-12-05 04:33:57

嵌套函数不是有效的C。你的编译器可能支持它,但是在大多数情况下,最好只能编写只能由特定编译器编译的代码。在嵌入式系统中,尤其是其中你可能希望使用的许多目标均不支持GCC的情况下,尤其如此。

以这种方式嵌套函数的唯一好处是限制了它的范围,这样它只能在封闭函数中被调用。

具体而言,在任务中使用功能几乎无关紧要,嵌套函数不会对运行时产生影响,它像常规函数一样进行编译,调用和运行,唯一的区别是在编译时就函数的可见性而言从其他代码。

因此,在任何功能中,这都是“不好的做法”,而不是专门的任务。