C ++ 11中用户定义的属性?

时间:2016-01-15 19:07:41

标签: c++ c++11 attributes clang++

有没有办法在C ++ 11或更高版本中创建用户定义的属性?

例如,

[[noreturn]] void exit();

是编译器定义的C ++ 11属性。

我想定义类似的内容:

[[comingsoon]] int function(int);

有没有这种机制?

编辑:我应该提到我正在使用Clang。

2 个答案:

答案 0 :(得分:5)

目前无法定义用户属性。

据我所知,目前还没有关于此功能是否有计划的信息。 但是,请查看Stroustrup的这个FAQ答案:https://isocpp.org/wiki/faq/cpp11-language-misc#attributes,尤其是这一部分:

  

属性的一个计划用途是改进了对OpenMP的支持。例如:

for [ [ omp::parallel() ] ] (int i=0; i<v.size(); ++i) {
    // ...
}

这可能意味着他们计划允许程序员定义它自己的属性。等等&amp;见。

答案 1 :(得分:4)

该语言无法添加属性。

当然,如果你使用的是Clang,你可以编辑Clang的源 ,并添加你喜欢的任何属性。