Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
quote(声明性)和proc_quote(过程性)宏如何允许对局部变量进行插值?
quote
proc_quote
由于(声明性)宏是卫生的,我希望它们无法访问它们被调用的环境。
为什么呢?
vec![a, b, c]
工作正常。
宏卫生并不意味着它们无法访问它们被调用的环境(这将使它们完全无用),这意味着它们不会意外影响它们被调用的环境,即内部符号宏既不会泄漏到环境符号中,也不会与环境符号冲突。
例如使用 C 宏,宏内部和外部的名称位于完全相同的命名空间中,因此可能会产生冲突和奇怪的副作用。