【问题标题】:Use of __attribute__((noreturn)) for the exit function declaration in 'user.h' of the xv6 source code?在 xv6 源代码的 'user.h' 中使用 __attribute__((noreturn)) 声明退出函数?
【发布时间】:2022-01-23 03:48:39
【问题描述】:

user.h

https://github.com/mit-pdos/xv6-riscv/blob/a1da53a5a12e21b44a2c79d962a437fa2107627c/user/user.h#L6

exit 只是系统调用以这种方式定义的 int exit(int) __attribute__((noreturn)); 为什么退出函数声明需要这个?

【问题讨论】:

    标签: c xv6


    【解决方案1】:

    我不认为noreturn 属性是严格要求的,但它会有所帮助。

    noreturn 属性告诉编译器exit 函数永远不会返回。理论上,这可以让编译器更好地理解任何调用exit的代码的可能代码路径,从而可以显示更准确的警告并更好地优化代码。

    【讨论】:

      【解决方案2】:

      属性声明是一些编译器支持的 C 语言的扩展。那个特别的标记exit() 函数具有一个非常不寻常的特征,即它永远不会返回给它的调用者。

      这种标记不是需要,但它有助于编译器更有效地优化和/或发出更准确的诊断信息。

      【讨论】:

      • 非常感谢,我认为到目前为止的两个答案对我来说都非常好......我会接受大卫的一个,因为它暂时是第一个。
      猜你喜欢
      • 1970-01-01
      • 2016-12-01
      • 2020-05-03
      • 1970-01-01
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多