目前我正在为ATMega8(AVR)微处理器开发一个项目。我偶然发现了这个词:
__C_task void my_Function(){
}
“__C_task”属性有什么作用?
答案 0 :(得分:0)
Google表示,它是一个特定于IAR的标识符,用于将函数标记为永不返回。 GCC等效项是noreturn
属性。
void my_Function(void) __attribute__((noreturn));
void my_Function(void)
{
...
}
答案 1 :(得分:0)
它表示"非返回"功能(我已经看到它被用在ATMEL微处理器C代码中,其中C是一种高级语言:))
答案 2 :(得分:0)
This网站说__C_task
相当于gcc的__attribute__((noreturn))
。
此外,在avr-gcc中分别有函数属性OS_main
and OS_task
。 (两者仍然很少记录。)
显然,即使声明函数noreturn
,avr-gcc也可以在堆栈中保存“调用已保存”寄存器。这对于“正常”功能可能有意义,也可能没有意义,但对于由任务调度程序管理的(并发)任务具有上下文切换(“OS”)和它自己的堆栈管理。任务基础它只是浪费堆栈上的空间,因为任务不会返回任何需要任何调用保存的寄存器完整的调用者。
答案 3 :(得分:-1)
关键字_C_task允许您保存堆栈大小并减少代码大小
它通常用于主