我的问题直接涉及到,__attribute__((noreturn))但更一般地可以涉及其他问题-例如__attribute__(noinline)。我已经看过gcc手册和Keil编译器参考指南,以确定用于__attribute__函数的正确语法。我通常看到以下内容:
void function (void) __attribute__((noreturn)); //Prototype has __attribute__
void function (void) //Definition does not.
{
while (1);
}
Run Code Online (Sandbox Code Playgroud)
我还看到了__attribute__在函数定义之前使用过的代码,如下所示:
__attribute__((noreturn)) void function (void)
{
while (1);
}
Run Code Online (Sandbox Code Playgroud)
但是,我还没有看到将其与函数原型和函数定义一起使用的示例。我认为__attribute__在两个位置同时使用会提高代码的可读性;通过查看函数原型或定义,可以知道已经应用了属性。结果如下:
__attribute__((noreturn)) void function (void) ; //Prototype has __attribute__
__attribute__((noreturn)) void function (void) //Definition has __attribute__
{ //as well.
while (1);
}
Run Code Online (Sandbox Code Playgroud)
我已经使用上述方法通过Keil armcc编译器成功编译了代码。是否有任何理由为什么我应该不带任何或器armcc GCC使用这种方法吗?
这是 GCC 4.0 文档中的一个片段,可在此处获得。
The keyword __attribute__ allows you to specify special attributes when making a
declaration.
Run Code Online (Sandbox Code Playgroud)
请注意,它说的是“声明”而不是“定义”。这篇较旧的 Unix Wiz 文章也有很多很好的建议。它还说在声明中使用属性。
| 归档时间: |
|
| 查看次数: |
841 次 |
| 最近记录: |