当前位置: 首页 > news >正文

关于成立网站建设项目小组的通知企业网络营销顾问

关于成立网站建设项目小组的通知,企业网络营销顾问,跨境独立站建站公司,做油漆稀料用哪个网站在c语言中,条件编译是一个非常好用的功能,那么rust中如何实现条件编译呢? rust的条件编译需要两个部分,一个是fratures,另一个是cfg。Cargo feature是一个非常强大的功能,可以提供条件编译和可选依赖项的高级特性&…

在c语言中,条件编译是一个非常好用的功能,那么rust中如何实现条件编译呢?
rust的条件编译需要两个部分,一个是fratures,另一个是cfgCargo feature是一个非常强大的功能,可以提供条件编译和可选依赖项的高级特性,这里只用条件编译功能

1 条件编译

在C语言中,条件编译需要先使用#defien XXX定义变量,然后再使用#ifdef XXX, #endif判断编译条件。那么在rust语言中如何实现呢?

1.1 定义变量

这一步相当于C语言中的变量的定义,即#defien XXX功能。
cargo.toml文件中使用feature,使用方式如下:

[features]
dbug = []
udug = []

上述代码相当于是有了两个编译条件

1.2 条件编译

在C语言中,条件编译的实现是#ifdef,在rust中则是使用#[cfg()]或者cfg!宏实现,代码如下:

#[cfg(feature = "dbus")] 
{println!("dbus");printf_dbus();
}// 或者
if cfg!(feature = "dbus") {println!("dbus");printf_dbus(); 
}

1.3 整个文件都需要使用条件编译

当整个文件都需要使用条件编译的时候,可以直接在文件的最开始使用#[cfg()]。假设dbus.rs整体都需要条件编译,示例如下:

#[cfg(feature = "dbus")]
pub mod debus {struct xxxx{}pub fn dbus_xxxx() {}
}

使用该文件中的函数

mod dbususe crate::dbus::debus::*;fn main()
{#[cfg(feature = "dbus")]{dbus_xxxx();}
}

1.4 编译代码

使用条件编译,在编译代码的时候需要使用下面命令,就可以将dbus代码编译进去。

cargo build --features "dbus"

默认编译
在编译代码不使用 --reatures选项的时候,代码会编译一个叫做default的默认字段,当没有任何默认需要编译的条件时,该字段可以省略,如下所示:

[features]
dbug = []
udug = []

如果在默认编译个时候需要编译dbug部分代码,则default部分可以写成如下方式:

[features]
default = ["dbug",]
dbug = []
udug = []

2 代码

代码下载:rust条件编译
目录结构
在这里插入图片描述

cargo.toml

[package]
name = "feature_learn"
version = "0.1.0"
edition = "2021"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies][features]
default = []
dbus = []
ubus = []

main.rs

mod dbus;
#[cfg(feature = "dbus")] 
use crate::dbus::debus::*;
// use crate::dbus::debus as debus;fn main() {println!("Hello, world!");#[cfg(feature = "dbus")] {println!("dbus");printf_dbus();}#[cfg(feature = "ubus")] {println!("ubus");} println!("default");// if cfg!(feature = "dbus") {//     println!("dbus");//     printf_dbus();// } else if cfg!(feature = "dbus")// {//     println!("ubus");// } else {//     println!("default")// };
}

dbug.rs

#[cfg(feature = "dbus")] 
pub mod debus {
struct Dbus {arg1:i32,arg2:i32,arg3:i32,
}pub fn printf_dbus() 
{let dbus = Dbus {arg1:1,arg2:2,arg3:3,};println!("dbus: {} {} {}", dbus.arg1, dbus.arg2, dbus.arg3);
}
}
http://www.zhongyajixie.com/news/57683.html

相关文章:

  • wordpress心情插件网站整站优化推广方案
  • 自己做网站卖矿山设备有没有免费的推广网站
  • 宁波建网站哪家google广告投放技巧
  • 东升手机网站建设站长之家seo综合
  • tob wordpress舟山百度seo
  • 建设校园网站做外贸用什么软件找客户
  • 门户网站建设招标方网络营销的实现方式有哪些
  • 嘉兴最大网络平台谷歌seo搜索引擎优化
  • 网站轮播图怎么做长沙seo优化排名
  • 河北住房城乡建设厅官方网站百度公司电话
  • 最好的网站建设组织百度关键词屏蔽
  • 上海网站优化推广企业网上的推广
  • 北京有哪些网站建设公司东莞服务好的营销型网站建设
  • 网站中常用的英文字体佛山seo培训机构
  • 做网站找哪家好 07月百度热搜榜排名今日p2p
  • 做网站网页的专业网站排名优化制作
  • 外贸网站建设乌鲁木齐英雄联盟韩国
  • 企业网站的特点是百度指数怎么提升
  • 网站开发浏览器兼容熊猫关键词工具
  • table做网站的好处宁波优化网站哪家好
  • wordpress用什么系统好北京网络优化
  • 公司做网站需要准备哪些资料苏州网站建设哪家靠谱
  • 石家庄建站模板源码网络营销推广与策划
  • 成都定制网站建设服务公司西地那非片的功能主治和副作用
  • 网站数据库网络错误怎么解决方案google排名
  • 网站logo设计流程建立网站平台需要多少钱
  • 西安做网站的公司排名网站优化排名怎么做
  • 郑州58同城招聘网最新招聘南通关键词优化平台
  • 株洲做网站渠道电话温州seo优化
  • 做网站站长开通vip百度认证官网申请