函数的属性是什么意思?

法哈德·西迪基(Fahad Siddiqui)

这个C ++ 11语法是什么意思?

[[ noreturn ]] void f () {
    throw "error";
}

C ++标准工作草案n3797指出,

如果该函数的任何声明指定了noreturn属性,则该函数的第一个声明应指定noreturn属性。如果noreturn在一个翻译单元中声明了带有属性的函数,而在另一翻译单元中声明了具有noreturn属性的同一个函数,则程序格式错误;无需诊断。

函数的属性是什么意思?

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

函数由其名称,返回类型,形式参数列表及其类型定义。这些项构成函数的“接口”:它们对函数的调用者很重要,因为它们定义了调用函数的方式。

另一方面,属性提供了一种方法,可以告诉编译器有关该函数的其他信息,而这些信息不会改变其接口。当编译器知道一个函数是

  • 中断处理程序,或
  • 纯函数(即无副作用或未引用任何状态),或
  • 返回两次(类似于fork)的函数,或者
  • 永不返回的函数,等等。

编译器可以更好地优化代码,并提供其他警告/使不必要的警告静音。

例如,如果您写

main() {
    f();
    g();
}

f()标记为noreturn,编译器将发出有关g()无法访问的警告

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章