Rust 条件编译

条件编译可以通过两种不同的操作符实现,如下:

  • cfg属性:在属性位置中使用#[cfg(…)]
  • cfg!宏:在布尔表达式中使用cfg!(…)

例子1:

// 仅当目标系统为Linux 的时候才会编译
#[cfg(target_os = "linux")]
fn are_you_on_linux() {
    println!("linux!")
}

// 仅当目标系统不是Linux 时才会编译
#[cfg(not(target_os = "linux"))]
fn are_you_on_linux() {
    println!("not linux!")
}

fn main() {
    are_you_on_linux();
    println!("Are you sure?");
    if cfg!(target_os = "linux") {
        println!("Yes. It's linux!");
    } else {
        println!("Yes. It's not linux!");
    }
}

例子2:

//main.rs
#[cfg(some_condition)]
fn conditional_function() {
    println!("condition met!");
}

fn main() {
    conditional_function();
    println!("Hello, world!");
}

运行:rustc main.rs && ./main (报错)

运行:rustc --cfg some_condition main.rs && ./main

本作品采用《CC 协议》,转载必须注明作者和本文链接
令狐一冲
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
文章
255
粉丝
120
喜欢
308
收藏
128
排名:335
访问:2.8 万
私信
所有博文
社区赞助商