2015-04-25 46 views
0

Rust blog引用:Rust中的宏和函數有什麼區別?

最後一件事說:鐵鏽的宏是從C宏顯著不同,如果你使用這些

是什麼鏽病宏和功能之間的差異?它與C有什麼不同?

+0

我回答了你明顯的問題(C宏和Rust宏的區別),但是你的標題詢問宏和函數。你應該改變你的頭銜。 – Shepmaster

回答

7

繼續閱讀文檔,特別是the chapter on macros

對我而言,最大的不同是macros are hygenic。這本書有一個例子,解釋什麼是衛生防止,並且還說:

每個宏擴展發生在一個獨特的「語法上下文」,並且每個變量都標記了它引入它的語法上下文。

它使用這個例子:

例如,這個C程序打印13而不是預期的25

#define FIVE_TIMES(x) 5 * x 

int main() { 
    printf("%d\n", FIVE_TIMES(2 + 3)); 
    return 0; 
} 

除此之外,鏽病宏

  • 可以通過編譯代碼
  • 可以在參數被重載計數
  • 可以匹配語法圖案像括號或括號或逗號
  • 可能要求重複輸入圖案
  • 可以遞歸
  • 操作在語法級別,而不是文本級別
相關問題