当我尝试使用以下命令编译此代码时rustc main.rs:
macro_rules! getPI {
let pi = 3.141592;
println!("Pi is roughly 3.142 \n {0}", pi);
}
fn main() {
print!(getPI);
}
Run Code Online (Sandbox Code Playgroud)
它给了我一个错误:
macro_rules! getPI {
let pi = 3.141592;
println!("Pi is roughly 3.142 \n {0}", pi);
}
fn main() {
print!(getPI);
}
Run Code Online (Sandbox Code Playgroud)
我对编程很陌生,希望有人能提供解决方案。
如果您“对编程非常陌生”,那么您应该从头开始;宏并不是开始。返回并重新阅读《Rust 编程语言》第二版,尽管它的目标读者是已经了解另一种编程语言的人。
然后您可以阅读第一版中有关宏的章节。这将向您展示宏的正确语法。宏有很多分支,就像一个match语句:
macro_rules! getPI {
() => {
let pi = 3.141592;
println!("Pi is roughly 3.142 \n {0}", pi);
}
}
fn main() {
getPI!();
}
Run Code Online (Sandbox Code Playgroud)
我也不知道你为什么要尝试print!宏的返回值,所以我删除了它。您还必须使用感叹号 ( !) 来调用宏。