Rust程式設計知識拾遺: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