// 定义一个宏来生成函数
macro_rules! generate_functions {
($count:expr) => {
$(
fn generated_function_$($count)() -> i32 {
$count
}
)*
};
}
// 使用宏生成3个函数
generate_functions!(3);
fn main() {
// 调用生成的函数
println!("Value from generated_function_1: {}", generated_function_1());
println!("Value from generated_function_2: {}", generated_function_2());
println!("Value from generated_function_3: {}", generated_function_3());
}
宏定义各部分含义解释:
macro_rules! generate_functions
:定义一个名为 generate_functions
的宏。
($count:expr)
:宏的参数列表,这里定义了一个名为 $count
的参数,类型为表达式(expr
),它代表要生成函数的数量。
=>
:分隔宏的模式匹配和替换部分。
$( ... )*
:这是一个重复构造,它会根据 $count
的值重复执行内部的代码块。内部的代码块为:
fn generated_function_$($count)() -> i32
:定义一个函数,函数名为 generated_function_
加上参数 $count
的值,返回类型为 i32
。
$count
:函数体,直接返回参数 $count
的值。