attributes
C++11提供了4个关键字来传递一些属性给编译器和用户,格式为:[[关键字]],分别是:noreturn,align,final,carries_dependency,具体介绍如下。
noreturn
顾名思义,就是提醒编译器没有返回值。举例:
void f [[noreturn]] () //f()永远不返回
{
throw "error"; //抛出异常
}
由上一篇文章介绍可知,这是要传递对齐信息,例如:
unsigned char c [[align(double)]] [sizeof(double)]; //字符数组,但是将以double类型对齐
final
学过Java的应该见过final,在这里,final是表示指示的函数不可重写:
struct B
{
virtual void f [[final]] ();
};
struct D:B
{
void f(); //报错
};
carries_dependency
这个没那么好拼写,它是表示为优化器提供帮助信息:
struct foo* f [[carries_dependency]] (int i);
int *g(int *x,int *y[[carries_dependency]]);