Rust 條件編譯

2022-09-19 21:03:13 字數 891 閱讀 3612

#[cfg]

#[cfg]允許我們基於乙個傳遞給編譯器的標記編譯**。它有兩種形式:

#[cfg(foo)]

fn foo()

#[cfg(bar="baz")]

fn bar()

它還有一些幫助選項:

#[cfg(any(unix,target_pointer_width = "32"))]

pub fn foo()

#[cfg(all(unix,windows))]

pub fn bar()

#[cfg(not(foo))]

pub fn not_foo()

這些選項可以任意巢狀:

#[cfg(not(foo),all(target_os = "macos",target_arch = "powerpc"))]

pub fn not_foo()

如何啟用和禁用這些開關,如果我們使用cargo,可以在cargo.toml中的[features]部分設定:

[features]

foo=

當我們這樣設定時,cargo傳遞給rustc乙個標記:

--cfg feature="$"

這些cfg標記集合會決定哪些功能被啟用,並且因此,哪些**會被編譯。如下:

如果使用

cargo build --features="foo"

編譯,他會向rustc傳遞--cfg feature="foo"標記,並且輸出中將會包含 mod foo。如果我們使用常規的cargo build編譯,則不會傳遞額外的標記,因為輸出不會存在foo模組。

#[cfg_attr]

cfg!

Rust 條件判斷

參考 rust 中的 if else 條件判斷,條件可以不使用小括號,但是後面的 需要使用大括號。fn main is negative n else if n 0 is positive n else is zero n 使用 if 表示式的時候,if else 需要返回相同的型別。fn main...

條件編譯 if

1 為什麼需要條件編譯 客戶的需求在不停地發生變化,一會兒需要這個功能,一會兒不需要這個功能。我們可以使用條件編譯來方便地裁剪功能。2 條件編譯語句 if 條件編譯語句 if的形式是 1 if expression 2.3 elif expression 4.5 elif expression 6....

if 條件編譯

1.格式 if constant expressionstatements elif constant expressionstatements else statements endif 其中 constant expression 常量表示式 字面值常量,或者乙個有 define定義的符號 由預...