2017-08-01 52 views
-1

當我嘗試使用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周圍測試。 –

回答

3

如果您「對編程非常陌生」,那麼您應該從頭開始;宏是而不是的開始。回去重讀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!宏的返回值,所以我刪除了。您還必須使用感嘆號(!)調用宏。