cfg有两种使用方式,一种是属性: #[cfg()]
,一种是宏:cfg! ,这两个都是非常常用的功能。
#[cfg()]
是 Rust 中的一个属性
用于根据配置条件来选择性地包含或排除代码。cfg
是 "configuration" 的缩写,用于控制在不同的构建环境或平台上编译和执行不同的代码块。在不同的操作系统上会编译不同的函数示例:
#[cfg(target_os = "linux")]
fn get_os_info(){
println!("linux");
}
#[cfg(target_os = "windows")]
fn get_os_info() {
println!("windows");
}
fn main() {
get_os_info();
}
也可使用not表达式:在非 linux 系统下会编译此函数
#[cfg(not(target_os = "linux"))]
fn get_os_info() {
println!("not linux");
}
#[cfg()]
属性可以用于函数、结构体、枚举、模块、模块导入等各种代码元素,以及条件编译块(#[cfg()]
包围的代码块)。它使用一个或多个条件表达式来指定编译时要包含或排除的代码。条件表达式可以是 Rust 的预定义属性、环境变量、操作系统类型、目标架构等。