__C_task符号,这是什么意思?

时间:2014-04-01 08:14:44

标签: c avr atmega microprocessors

目前我正在为ATMega8(AVR)微处理器开发一个项目。我偶然发现了这个词:

__C_task void my_Function(){

}

“__C_task”属性有什么作用?

4 个答案:

答案 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允许您保存堆栈大小并减少代码大小

它通常用于主