天天看點

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!");
}