【问题标题】:Why doesn't the Godbolt compiler explorer show any output for my function when compiled in release mode?为什么 Godbolt 编译器资源管理器在发布模式下编译时不显示我的函数的任何输出?
【发布时间】:2017-08-08 08:26:57
【问题描述】:

我想用https://rust.godbolt.org查看这个函数的汇编输出:

fn add(a: u8, b: u8) -> u8 {
    a + b
}

将其粘贴到网站上可以正常工作,但会显示大量组装。这并不奇怪,因为rustc 默认情况下会在调试模式下编译我的代码。当我在release模式下编译by passing -O to the compiler,完全没有输出!

我做错了什么?为什么 Rust 编译器会在发布模式下删除所有内容?

【问题讨论】:

    标签: rust


    【解决方案1】:

    Godbolt 通过将 --crate-type=lib 传递给编译器,将您的 Rust 代码编译为库 crate。库中的代码只有在公开时才有用。因此,在您的情况下,您的 add() 函数是私有的,并且已从编译器中完全删除。解决方案相当简单:

    通过添加pub 来公开您的函数。 现在编译器不会删除该函数,因为它是您库的公共接口的一部分。

    【讨论】:

      猜你喜欢
      • 2020-06-30
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      相关资源
      最近更新 更多