Rust 条件编译速记

Rust 条件编译速记,rust,compilation,conditional-compilation,Rust,Compilation,Conditional Compilation,在我的.toml文件中,我定义了一个默认关闭的功能: [features] foo = [] 如果启用此功能,我想打印“FOO”: 然后我可以像这样编译(并运行)代码:cargo run--features foo 然而,我更喜欢使用我在书中看到的速记。大概是这样的: fn main() { #[cfg(foo)] println!("FOO"); } 但是,当使用与前面相同的cargo run命令时,不会编译print语句。我错过了什么?根据 #[cfg

在我的
.toml
文件中,我定义了一个默认关闭的功能:

[features]
foo = []
如果启用此功能,我想打印“FOO”:

然后我可以像这样编译(并运行)代码:
cargo run--features foo

然而,我更喜欢使用我在书中看到的速记。大概是这样的:

fn main() {
    #[cfg(foo)]
    println!("FOO");
}
但是,当使用与前面相同的
cargo run
命令时,不会编译print语句。我错过了什么?

根据

#[cfg(foo)]
是一个配置选项名称。并且可以设置为:
rustc--cfg foo main.rs
。有关如何将其与货物一起设置,请参阅


#[cfg(feature=“foo”)]
是一个配置选项键值对。

好吧,这不是查询属性的语法。你可以实现一个proc宏,这样你就可以编写
#[foo]
,而不是
#[cfg(feature=“foo”)]
,如果你真的想写的话,但我认为,简单地使用其他人使用的语法,代码就更容易理解了。@SvenMarnach在上面给出的链接中,文档中给出示例时的意思是什么:
[cfg(不是(foo))]
。在这种情况下,
foo
是什么?@HiDefender
//此函数仅在未定义foo时包含
。启用功能“foo”是将值
foo
添加到
功能
,从而定义功能。
fn main() {
    #[cfg(foo)]
    println!("FOO");
}