cpp-attributes

C11标准中的新语法,用于让程序员在代码中提供额外信息

1
2
3
4
5
6
7
void f [[ noreturn ]] () 
{
throw "error"; // 虽然不得返回,但可以抛出异常
}

struct * f [[carries_dependency]] (int i); // 编译优化指示
int* g(int* x, int* y [[carries_dependency]]);

属性被放置在两个双重中括号“[[…]]”之间。目前,noreturn和carries_dependency是C++11标准中仅有的两个通用属性。