#[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定義的符號 由預...