在Rust中,可以按如下方式执行conditional compilation。
#[cfg(rust_version = "1.10")]
fn my_func() {}
是否可以定义cfg
的变量以在同一源文件中进行检查?
例如:
// leave off, just a quick test to enable when troubleshooting.
#define use_counter 1 // C style (not valid Rust)
#[cfg(use_counter == "1")]
static mut fn_counter: usize = 0;
fn my_func() {
#[cfg(use_counter = "1")]
unsafe { fn_counter += 1; }
}
main () {
// code calling 'my_func'
// print how many times the function is called.
#[cfg(use_counter = "1")]
unsafe { println!("Function count {}", fn_counter); }
}
我不是在问如何编写函数计数器,它只是一个可选择将逻辑插入源文件的例子。
答案 0 :(得分:1)
是的,它写为#[cfg(use_counter)]
。这些标志可以在编译时在命令行上启用或禁用,并且不会在Cargo.toml中公开。
fn main() {
#[cfg(use_counter)]
println!("counter is enabled");
}
使用货运,在禁用该功能的情况下运行:
$ cargo run
使用货运,在启用该功能的情况下运行:
$ RUSTFLAGS="--cfg use_counter" cargo run
在禁用功能的情况下直接编译:
$ rustc src/main.rs
在启用该功能的情况下进行编译:
$ rustc src/main.rs --cfg use_counter