“没有规矩预期令牌”中写'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; 
    |   ^^ 

我对编程非常陌生,我希望有人有解决方案。

+1

为什么你想要这是一个宏? – sepp2k

+0

@ sepp2k周围测试。 –

如果您“对编程非常陌生”,那么您应该从头开始;宏是而不是的开始。回去重读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!宏的返回值,所以我删除了。您还必须使用感叹号(!)调用宏。