我想使用https://rust.godbolt.org来查看这个函数的汇编输出:
fn add(a: u8, b: u8) -> u8 {
a + b
}
在网站上粘贴代码没有问题,但会显示很多汇编代码。这并不奇怪,因为默认情况下rustc
以调试模式编译我的代码。当我使用编译器传递-O
开关以发布模式编译时,就会完全没有输出!
我做错了什么?为什么Rust编译器在发行模式下会删除所有内容?我想使用https://rust.godbolt.org来查看这个函数的汇编输出:
fn add(a: u8, b: u8) -> u8 {
a + b
}
在网站上粘贴代码没有问题,但会显示很多汇编代码。这并不奇怪,因为默认情况下rustc
以调试模式编译我的代码。当我使用编译器传递-O
开关以发布模式编译时,就会完全没有输出!
我做错了什么?为什么Rust编译器在发行模式下会删除所有内容?--crate-type=lib
将您的Rust代码编译为库crate。而来自库的代码仅在其为公共代码时才有用。因此在您的情况下,您的add()
函数是私有的,被完全从编译器中删除。解决方案非常简单:
通过添加pub
使您的函数变为公共函数。现在编译器不会再移除该函数,因为它是库的公共接口的一部分。