下面的代码用于在4月份建立得很好(Rust版本~1.6),但它不再存在了。
#![feature(asm)]
enum MyEnum { One = 1 }
fn main() {
unsafe {
asm!("nop" : : "i" (MyEnum::One as isize) : : ); // broken
}
}
错误消息并未指出可能导致此问题的任何明显更改。
答案 0 :(得分:4)
"i"
约束的值必须是编译时常量,并且您提供的内容不是。如果将添加内容移动到Rust中,则可以使用约束"ri"
来使用寄存器和常量。
对于内联汇编程序,某些内容是否为常量可能会受到优化选项的影响。