在GUN C手册6.30声明函数属性中,它声明:
您还可以在每个关键字的前面和后面使用
__
指定属性。这允许您在头文件中使用它们,而不必担心可能存在同名宏。例如,您可以使用__noreturn__
而不是noreturn
。
这是否意味着用户可以指定自定义属性?或者还有什么?我真的很困惑,有人能帮我吗,或者给我一些样品?
它说的是头文件可能已经做了:
#define noreturn 3
如果你试图声明一个函数为:
void fatal () __attribute__ ((noreturn));
将被处理,就好像你写了:
void fatal () __attribute__ ((3));
这不是你想要的。所以你可以这样写:
void fatal () __attribute__ ((__noreturn__));
这是安全的,因为用户不允许定义名称以两个下划线开头的宏,这些名称为实现保留。参见在c++标识符中使用下划线有哪些规则?