vbe*_*nar 2 macros module rust
我正在建立一个图书馆,我有以下结构:
源代码/库.rs
mod a;
mod b;
Run Code Online (Sandbox Code Playgroud)
src/b.rs:
macro_rules! x ...
Run Code Online (Sandbox Code Playgroud)
源代码/a.rs:
x!()
Run Code Online (Sandbox Code Playgroud)
这不起作用。我试着拨弄#macro_export和#macro_use,但没有成功。在同一个库中但在不同的模块和文件中重用宏的正确方法是什么?
为了使子模块中的宏对“兄弟”模块可见,它们必须按特定顺序声明,也就是说,应首先声明具有宏的模块。它还应该#[macro_use]附加属性。这应该有效:
#[macro_use] mod b;
mod a;
Run Code Online (Sandbox Code Playgroud)
#[macro_use] 属性使模块中的宏对模块声明“下方”的所有代码可见,这就是您的原始变体不可能工作的原因。
| 归档时间: |
|
| 查看次数: |
705 次 |
| 最近记录: |