大佬们,问一个条件编译的问题。(答案已总结,在最后,两种办法)
cargo r --features=f1
这边编译不通过,请问有没有其他办法可以通过编译呢,我需要拆分两段代码。一段声明变量,一段使用变量
上代码
fn main() {
#[cfg(feature = "f1")] {
let mut x = vec![];
}
#[cfg(feature = "f1")] {
x.push(123);
println!("f1");
}
}
解决办法一:
fn main() {
#[cfg(feature = "f1")]
let mut x = vec![];
#[cfg(feature = "f1")] {
x.push(123);
println!("f1");
}
}
解决办法二:
use cfg_if::cfg_if;
fn main() {
cfg_if! {
if #[cfg(feature = "f1")] {
let mut x = vec![];
}
}
cfg_if! {
if #[cfg(feature = "f1")] {
x.push(123);
println!("{x:#?}");
}
}
}
1
共 7 条评论, 1 页
评论区
写评论哥,您是对滴。6
是变量作用域的问题。
使用 cargo-expand 展开后为
确实对cfg有点误解了
--
👇
gorust21: 具体啥粗,是不是对feature有误解
谢谢哥,您的方法可行。感谢
--
👇
ManonLoki: ```rust
fn main() { #[cfg(feature = "f1")] let mut x = vec![];
}
这样就可以了
具体啥粗,是不是对feature有误解
要么这样 要么你直接整合到一个feature里