Rust使用cfg来实现不同系统的条件编译

cfg有两种使用方法:

1. 属性的方法 #[cfg(…)]

#[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表达式:

#[cfg(not(target_os = "linux"))]
fn get_os_info() {
    println!("not linux");
}

在非 linux 系统下会编译此函数。

2. 使用cfg宏的方法进行条件编译

fn main() {
 
    if cfg!(target_os = "linux") {
        println!("linux");
    } else {
        println!("not linux");
    }
}

具体使用哪一种方法,要视情况而定。比如第二种方法不适合代码数量多的情况。

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/1554.html

分类: 计算机技术
推荐阅读:
Golang实现base64加密解密 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。
快速创建HTTP服务来分享文件 在Linux系统下,你可以快速的创建HTTP服务,将指定文件通过HTTP分享出来,而这只需要一条命令:
MySQL AES_ENCRYPT()、AES_DECRYPT()函数 AES_ENCRYPT()和AES_DECRYPT()使用官方AES算法实现数据的加密和解密;其密钥默认长度为128位,默认块加密模式为ECB;
Golang实现获取文件的后缀名(扩展名) Golang通过调用 path.Ext() 函数,可获取文件的后缀名。
Rust stringify宏的用法和示例 在Rust中,stringify是一个宏,它接受任何合法的Rust标识符,并将其转换为字符串;这种转换发生在编译时,而不是运行时,这意味着它对于生成代码或诊断消息非常有用。
Python里with语句的用法与技巧 本文将详细讲解Python语言中with语句的用法,以及如何让自定义的类也支持with语句;