fn main() {
let x: u8 = 1;
const K: u8 = 2;
macro_rules! m {
() => {
print!("{}{}", x, K);
};
}
{
let x: u8 = 3;
const K: u8 = 4;
m!();
}
}
- 衛生
看過macro_rules
的都知道衛生性。
這裡簡單的描述一下宏內部對於變數引用的特質- 變數:選擇宣告時候最近的值進行固化
- 常量:不進行固化
根據上述性質,對於x
會選取1
進行固化。
而針對K
,並不會進行固化,也就是隻會選取最近的4
作為內部值。
因此列印的是14
。
14
本作品採用《CC 協議》,轉載必須註明作者和本文連結