【发布时间】:2014-05-28 16:23:36
【问题描述】:
我的问题直接与__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 一起使用?
【问题讨论】:
-
这取决于编译器......我认为它会根据指令而改变。