在 FreeRTOS Tasks 中实现函数是个好习惯吗?
Is it a good habit to implement functions inside FreeRTOS Tasks?
我是 FreeRTOS 和实时操作系统的新手。我想知道在 FreeRTOS Tasks 中实现功能是否是一种好的编程风格。例如
void displayTask(void* param) {
static void Factorial (params) {
// doSth
}
for(;;) {
//call it here
Factorial(params);
}
}
还是在 Task 之外实现它更好?因为如果我有很多函数,我想我会很难阅读代码。
嵌套函数不是有效的 C。您的编译器可能支持它,但在大多数情况下不建议编写只能由特定编译器编译的代码。在嵌入式系统中尤其如此,在这些系统中,许多您可能希望使用的目标不支持 GCC。
以这种方式嵌套函数的唯一好处是限制其范围,使其只能在封闭函数内调用。
在任务中具体使用该功能在很大程度上是无关紧要的,嵌套函数没有 运行 时间影响,它像常规函数一样被编译、调用和 运行s,唯一不同之处在于,在编译时,函数在其他代码中的可见性。
所以这只是任何功能中的“不良做法”,而不是具体的任务。
我是 FreeRTOS 和实时操作系统的新手。我想知道在 FreeRTOS Tasks 中实现功能是否是一种好的编程风格。例如
void displayTask(void* param) {
static void Factorial (params) {
// doSth
}
for(;;) {
//call it here
Factorial(params);
}
}
还是在 Task 之外实现它更好?因为如果我有很多函数,我想我会很难阅读代码。
嵌套函数不是有效的 C。您的编译器可能支持它,但在大多数情况下不建议编写只能由特定编译器编译的代码。在嵌入式系统中尤其如此,在这些系统中,许多您可能希望使用的目标不支持 GCC。
以这种方式嵌套函数的唯一好处是限制其范围,使其只能在封闭函数内调用。
在任务中具体使用该功能在很大程度上是无关紧要的,嵌套函数没有 运行 时间影响,它像常规函数一样被编译、调用和 运行s,唯一不同之处在于,在编译时,函数在其他代码中的可见性。
所以这只是任何功能中的“不良做法”,而不是具体的任务。