继续阅读文档,特别是the chapter on macros!
宏在编译时执行.它们通常会扩展成新的代码段,然后编译器需要进一步处理这些代码段.
对我来说最大的区别是Rust macros are hygenic.这本书有一个例子,解释了什么是卫生预防,还说:
每个宏扩展都发生在一个不同的"语法上下文"中,每个变量都用引入它的语法上下文进行标记.
它使用了以下示例:
例如,这个C程序打印13而不是预期的25.
#define FIVE_TIMES(x) 5 * x int main() { printf("%d\n", FIVE_TIMES(2 + 3)); return 0; }
除此之外,Rust 的宏