专业的编程技术博客社区

网站首页 > 博客文章 正文

Rust 基础入门-错误处理和宏-属性式宏&函数式宏

baijin 2024-09-11 00:55:36 博客文章 7 ℃ 0 评论

概念

在前几节的基础上,我们继续学习属性式宏函数式宏

说明:也有人将其称为 类属性宏 类函数宏,但这里提到的“类”并不是面向对象编程中的class,而是like,类似于的意思,因此这种叫法很容易让人混淆,翻译成“属性式”和“函数式”则更加贴切。

属性式宏(attribute-like macro):定义了可添加到标记对象的新外部属性。这种宏通过#[attr]或#[attr(…)]方式调用,其中…是标记的具体属性(可选)。

一个属性式宏定义的简单框架如下所示:


这里需要注意的是,与派生宏、函数式宏不同,属性式宏有两个输入参数,而不是一个。

第一个参数是属性名称后面的带分隔符的标记项(即#[attr(…)]中(…)的具体内容)。如果只有属性名称(其后不带标记项,比如 #[attr]),则这个参数的值为空。

第二个参数是标记的代码项本身的 Token 流,它可以是被标记的字段、结构体、函数等(见真实用例)。

文档:

如下的代码展示了一些常见的属性式宏:#[cfg(…)]是根据条件编译的属性宏、#[test]是用于标记测试函数的属性宏、#[allow(...)] #[warn(...)]控制编译器的警告级别。


示例代码:

这里展示了常见的函数式宏。


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表