我是FreeRTOS和实时操作系统的新手。我想知道在FreeRTOS Tasks中实现函数是否是一种好的编程风格。例如
void displayTask(void* param) {
static void Factorial (params) {
// doSth
}
for(;;) {
//call it here
Factorial(params);
}
}
还是只在Task外部实现它更好?因为在Case中我有很多功能,很难读取我猜到的代码。
嵌套函数不是有效的C。你的编译器可能支持它,但是在大多数情况下,最好只能编写只能由特定编译器编译的代码。在嵌入式系统中,尤其是其中你可能希望使用的许多目标均不支持GCC的情况下,尤其如此。
以这种方式嵌套函数的唯一好处是限制了它的范围,这样它只能在封闭函数中被调用。
具体而言,在任务中使用功能几乎无关紧要,嵌套函数不会对运行时产生影响,它像常规函数一样进行编译,调用和运行,唯一的区别是在编译时就函数的可见性而言从其他代码。
因此,在任何功能中,这都是“不好的做法”,而不是专门的任务。