我正在尝试理解rust宏语法。Here我读到宏通常可以用3种方式调用:
mymacro!(<tokens>);
mymacro![<tokens>];
mymacro!{<tokens>};然后我看到了一个示例宏定义,也使用了宏(macro_rules),但语法不符合以下规则:
macro_rules! name {<tokens>}name是一个令牌,我们在这里有第四种合法的宏调用形式吗?或者macro_rules是一个关键字,而不仅仅是宏,并且使用常规宏所不能使用的特殊语法?
发布于 2021-10-06 19:22:39
不,macro_rules是一个特殊的“指令”。您可以查看编译器语法树here。重要的部分是:
Syntax
MacroRulesDefinition :
macro_rules ! IDENTIFIER MacroRulesDef您可以看到,它是宏语法的入口点。
https://stackoverflow.com/questions/69471332
复制相似问题