Rust 條件編譯

linghuyichong發表於2020-03-03

條件編譯可以透過兩種不同的運算子實現,如下:

  • 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 協議》,轉載必須註明作者和本文連結
令狐一衝

相關文章