在 C 中可以编写一个声明变量的宏,如下所示:
#define VARS(a, b, c) \
int a, b, c;
Run Code Online (Sandbox Code Playgroud)
当然,这不是您通常想要做的事情。
在实际示例中,我希望开始工作并不那么简单。
#define VARS(data, stride, a, b, c) \
MyStruct *a = &data.array[0], \
MyStruct *b = &data.array[1 * (stride)], \
MyStruct *c = &data.array[2 * (stride)];
Run Code Online (Sandbox Code Playgroud)
然而,对于这个问题,分配的确切细节应该无关紧要。
是否可以在 Rust 中编写这样的宏?如果是这样会怎么写?
可以在 Rust 中编写这样的宏:
macro_rules! vars {
($data:expr, $stride:expr, $var1:ident, $var2:ident, $var3:ident) => {
let $var1 = $data[0];
let $var2 = $data[1 * $stride];
let $var3 = $data[2 * $stride];
};
}
fn main() {
let array = [1, 2, 3, 4, 5];
let stride = 2;
vars!(array, stride, a, b, c);
println!("{}", a);
println!("{}", b);
println!("{}", c);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2628 次 |
最近记录: |