Rust中的宏和函数有什么区别?

问题描述 投票:3回答:2

来自qazxsw poi的行情:

最后要提一句:Rust的宏与C宏有很大的不同,如果你已经使用过它们了

Rust中的宏和函数有什么区别?它与C有什么不同?

rust
2个回答
13
投票

继续阅读文档,特别是Rust blog

对我而言,最大的不同是the chapter on macros。这本书有一个例子说明卫生防止了什么,并且还说:

每个宏扩展都在不同的“语法上下文”中进行,每个变量都使用引入它的语法上下文进行标记。

它使用这个例子:

例如,此C程序打印13而不是预期的25。

macros are hygenic

除此之外,Rust宏

  • 可以与编译的代码一起分发
  • 可以在参数计数中重载
  • 可以匹配语法模式,如大括号或parens或逗号
  • 可能需要重复输入模式
  • 可以递归
  • 在语法级别而不是文本级别操作

-1
投票

#define FIVE_TIMES(x) 5 * x int main() { printf("%d\n", FIVE_TIMES(2 + 3)); return 0; } 中,您可以使用可变数量的参数。

macro中,您必须定义参数的数量和类型。

© www.soinside.com 2019 - 2024. All rights reserved.