1

quote(声明性)和proc_quote(过程性)宏如何允许对局部变量进行插值?

由于(声明性)宏是卫生的,我希望它们无法访问它们被调用的环境。

4

1 回答 1

3

由于(声明性)宏是卫生的,我希望它们无法访问它们被调用的环境。

为什么呢?

vec![a, b, c]

工作正常。

宏卫生并不意味着它们无法访问它们被调用的环境(这将使它们完全无用),这意味着它们不会意外影响它们被调用的环境,即内部符号宏既不会泄漏到环境符号中,也不会与环境符号冲突。

例如使用 C 宏,宏内部和外部的名称位于完全相同的命名空间中,因此可能会产生冲突和奇怪的副作用。

于 2020-11-12T07:40:38.890 回答