作者:甜心菇 | 来源:互联网 | 2023-07-10 12:50
我是 FreeRTOS 和实时操作系统的新手。我想知道在 FreeRTOS 任务中实现功能是否是一种好的编程风格。例如
void displayTask(void* param) {
static void Factorial (params) {
// doSth
}
for(;;) {
//call it here
Factorial(params);
}
}
还是只是在任务之外实现它更好?,因为如果我有很多功能,我猜很难阅读代码。
回答
嵌套函数不是有效的 C。您的编译器可能支持它,但在大多数情况下编写只能由特定编译器编译的代码是不明智的。在您可能希望使用的许多目标不支持 GCC 的嵌入式系统中尤其如此。
以这种方式嵌套函数的唯一好处是限制其作用域,使其只能在封闭函数内调用。
在任务中专门使用该功能在很大程度上无关紧要,嵌套函数没有运行时影响,它的编译、调用和运行就像常规函数一样,唯一的区别是在编译时关于函数的可见性从其他代码。
因此,这在任何功能中都只是“糟糕的做法”,而不是具体的任务。