0

GUN C 手册6.30 Declaring Attributes of Functions中,它指出:

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

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

4

1 回答 1

1

它的意思是头文件可能已经完成:

#define noreturn 3

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

void fatal () __attribute__ ((noreturn));

它会像你写的那样被处理:

void fatal () __attribute__ ((3));

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

void fatal () __attribute__ ((__noreturn__));

这是安全的,因为不允许用户定义名称以两个下划线开头的宏,这些名称是为实现保留的。请参阅在 C++ 标识符中使用下划线的规则是什么?

于 2013-04-14T03:32:33.573 回答