我的问题直接与其他问题有关,__attribute__((noreturn))
但更普遍地也可能与其他问题有关,例如__attribute__(noinline)
. 我查看了 gcc 手册和 Keil 编译器参考指南,以确定__attribute__
与函数一起使用的正确语法。我一般看到的情况如下:
void function (void) __attribute__((noreturn)); //Prototype has __attribute__
void function (void) //Definition does not.
{
while (1);
}
我还看到了__attribute__
函数定义之前使用的如下:
__attribute__((noreturn)) void function (void)
{
while (1);
}
但是,我还没有看到将它与函数原型和函数定义一起使用的示例。我认为__attribute__
在这两个位置都有将导致更好的代码可读性;通过查看函数原型或已应用属性的定义,我会知道。结果如下:
__attribute__((noreturn)) void function (void) ; //Prototype has __attribute__
__attribute__((noreturn)) void function (void) //Definition has __attribute__
{ //as well.
while (1);
}
我已经使用前面提到的方法使用 Keil armcc 编译器成功编译了代码。有什么理由不应该将此方法与 armcc 或 gcc 一起使用?