“没有规矩预期令牌”中写'let`语句时,宏
问题描述:
当我尝试使用rustc main.rs
编译这段代码:“没有规矩预期令牌”中写'let`语句时,宏
macro_rules! getPI {
let pi = 3.141592;
println!("Pi is roughly 3.142 \n {0}", pi);
}
fn main() {
print!(getPI);
}
它给了我一个错误:
error: no rules expected the token `pi`
--> src/main.rs:2:9
|
2 | let pi = 3.141592;
| ^^
我对编程非常陌生,我希望有人有解决方案。
答
如果您“对编程非常陌生”,那么您应该从头开始;宏是而不是的开始。回去重读The Rust Programming Language, second edition,尽管它的目标人群是已经了解另一种编程语言的人。您可以阅读the chapter from the first edition about macros。这将向您显示宏的正确语法。宏有很多的武器,像match
声明:
macro_rules! getPI {
() => {
let pi = 3.141592;
println!("Pi is roughly 3.142 \n {0}", pi);
}
}
fn main() {
getPI!();
}
我也不知道为什么你会尝试print!
宏的返回值,所以我删除了。您还必须使用感叹号(!
)调用宏。
为什么你想要这是一个宏? – sepp2k
@ sepp2k周围测试。 –