如何指定GNU C的属性?

时间:2013-04-14 03:24:36

标签: attributes gnu function-attributes

GUN C manual 6.30声明函数属性中,它声明:

  

您还可以在每个关键字前后指定__的属性。这允许您在头文件中使用它们,而不用担心可能的同名宏。例如,您可以使用__noreturn__代替noreturn

这是否意味着用户可以指定自定义属性?还有什么?我当然很困惑,有人可以帮忙,还是给我一些样品?

1 个答案:

答案 0 :(得分:1)

它的含义是头文件可能已经完成:

#define noreturn 3

如果您尝试将函数声明为:

void fatal () __attribute__ ((noreturn));

它将被处理,就像你写的那样:

void fatal () __attribute__ ((3));

这不是你想要的。所以你可以写一下:

void fatal () __attribute__ ((__noreturn__));

这是安全的,因为不允许用户定义名称以两个下划线开头的宏,这些名称是为实现保留的。见What are the rules about using an underscore in a C++ identifier?