You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rust编译时输出警告信息?求等效C宏实现

Rust中实现类似C的编译时警告/错误提示

问题背景

我需要在Rust中实现类似C语言里#pragma message、#error、#warning的功能,用来提醒自己和团队成员未来需要修补的未解决问题,比如希望在编译时打印如下提示:

// 期望编译时输出警告信息
#[warning ("Do not forget to fix this when you have the missing data")]
let pbj = MyObject { is_something: false } ; // TODO: 拿到数据后修正为正确值

已经排除了todo()宏(会导致panic,不符合需求),尝试过诊断属性但可能使用方式有误。


解决方案

一、编译错误(强制终止编译,对应C的#error)

使用Rust内置的compile_error!宏,编译时会直接报错并终止,适合必须立即处理的问题:

compile_error!("必须修复:拿到数据后将is_something改为正确值");
let pbj = MyObject { is_something: false };

二、编译警告(仅提示不终止,对应C的#warning/#pragma message)

方法1:利用#[deprecated]属性

虽然该属性本意是标记废弃代码,但可以通过note字段输出自定义警告信息,编译时会触发警告:

#[deprecated(note = "Do not forget to fix this when you have the missing data")]
let pbj = MyObject { is_something: false };

该属性可应用于变量、函数、结构体等,编译时会在输出中显示指定的note内容。

方法2:使用Clippy的fixme/todo lint

如果项目启用了Clippy,直接在代码中写注释即可触发警告:

let pbj = MyObject { is_something: false }; // FIXME: Do not forget to fix this when you have the missing data

确保Clippy的clippy::todo和clippy::fixme lint处于启用状态(默认是warn级别),编译时会输出对应的警告信息。


内容的提问来源于stack exchange,提问作者Avba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 12:01:00