在编译时发出警告?

Posted

技术标签:

【中文标题】在编译时发出警告?【英文标题】:Issuing a warning at compile time? 【发布时间】:2019-11-23 08:07:47 【问题描述】:

我想在编译时发出警告,可能来自宏。它不应该被cap_lints 静音。我目前的用例是功能弃用,但还有其他可能的用途。

【问题讨论】:

【参考方案1】:

目前这在稳定的 Rust 中是不可能的。但是,有一个不稳定的功能,procedural macro diagnostics,它通过Diagnostic API 为过程宏提供此功能。

要从程序宏内部发出编译器警告,您可以这样使用它:

#![feature(proc_macro_diagnostic)]

use proc_macro::Diagnostic;

Diagnostic::new()
    .warning("This method is deprecated")
    .emit();

要将警告与特定令牌范围相关联,您可以改用spanned_warning。这使得警告输出显示相关的源标记以及下划线的消息。

【讨论】:

以上是关于在编译时发出警告?的主要内容,如果未能解决你的问题,请参考以下文章

使用编译器指令在文件丢失时发出警告

C++ DLL中的导出类在编译时会发出警告[重复]

为 iOS 编译 Qt 应用程序时使用 qml.qrc 发出警告

编译器选项在 -Wall -Werror 之后发出错误警告

此代码在 DevC++ 中编译没有问题,但 Visual Studio 2008 发出这些警告并拒绝编译。我的错误在哪里?

调用复制 ctor 而不是移动 ctor - 编译器可以发出警告吗?