如何测试宏中的标识符是否以下划线开头?

问题描述:

我需要检查标识符是否以下划线开头。这不起作用:如何测试宏中的标识符是否以下划线开头?

#[macro_export] 
macro_rules! UNDECORED { 
    (_$_i:ident) => {... do something if underscored}; 
    ($_i:ident) => {... do something else}; 
} 

错误在哪里?

宏接收“令牌”作为输入;前导下划线不是一个单独的标记,并且不能匹配部分标记。

您可以stringify!标识符并在运行时匹配名称。