我有一个macro:
macro_rules! test {
($trait:tt<$($param:literal)+>) => {
{
println!("{}", stringify!($($param)++));
}
};
}
现在输出是:
1 2 3 +
我想得到输出:
1 + 2 + 3
1
共 5 条评论, 1 页
评论区
写评论末尾会多一个+
对以下内容的回复:
你把第一个
+
移到括号里面就行了stringify!($($param+)+)
对以下内容的回复:
谢谢。这样可以。
+在宏里作为op,本身是特殊字符,导致++中的第1个+被解析成了op而不是+字符本身。是否rust存在某种转义语法可以处理这个特殊字符,可以有更自然的写法。
我感觉这是个 XY 问题...