下面代码包括两个源文件:
// sub.rs
#[macro_use]
extern crate xxxx;
...
// main.rs
...
编译的话会出现错误信息 “error[E0468]: an extern crate
loading macros must be at the crate root 处理方法”。
原因是,我们需要在 sub.rs 文件中使用 xxxx 模块中的宏,但是在 sub.rs 中声明 #[macro_use] 为时已晚。这是 Rust 编译程序语法分析过程导致的。必须把声明在 main.rs 或 lib.rs 中声明才有效。
程序修改如下:
// sub.rs
extern crate xxxx;
...
// main.rs
...
#[macro_use]
extern crate xxxx;
再编译的话就没问题了!