为什么在发布模式下编译我的函数时,Godbolt编译器无法显示任何输出?

13

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

fn add(a: u8, b: u8) -> u8 {
    a + b
}
在网站上粘贴代码没有问题,但会显示很多汇编代码。这并不奇怪,因为默认情况下rustc以调试模式编译我的代码。当我使用编译器传递-O开关以发布模式编译时,就会完全没有输出! 我做错了什么?为什么Rust编译器在发行模式下会删除所有内容?
1个回答

25
Godbolt通过向编译器传递--crate-type=lib将您的Rust代码编译为库crate。而来自库的代码仅在其为公共代码时才有用。因此在您的情况下,您的add()函数是私有的,被完全从编译器中删除。解决方案非常简单: 通过添加pub使您的函数变为公共函数。现在编译器不会再移除该函数,因为它是库的公共接口的一部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接