首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Rust中使用cfg检查发布/调试生成?

如何在Rust中使用cfg检查发布/调试生成?
EN

Stack Overflow用户
提问于 2016-08-29 11:14:24
回答 1查看 43.2K关注 0票数 120

有了C预处理器,这很常见,

代码语言:javascript
运行
复制
#if defined(NDEBUG)
    // release build
#endif

#if defined(DEBUG)
    // debug build
#endif

货物的大致等价物如下:

  • cargo build --release用于释放。
  • 用于调试的cargo build

Rust的#[cfg(...)]属性或cfg!(...)宏将如何用于做类似的事情?

我知道Rust的预处理器不像C的那样工作,我检查了文档和此页面列出了一些属性。(假设这份清单是全面的)

可以检查debug_assertions,但当用于检查更一般的调试情况时,它可能会产生误导。

我不确定这个问题是否与货物有关。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-29 11:38:56

您可以使用debug_assertions作为适当的配置标志。它同时适用于#[cfg(...)]属性和cfg!宏:

代码语言:javascript
运行
复制
#[cfg(debug_assertions)]
fn example() {
    println!("Debugging enabled");
}

#[cfg(not(debug_assertions))]
fn example() {
    println!("Debugging disabled");
}

fn main() {
    if cfg!(debug_assertions) {
        println!("Debugging enabled");
    } else {
        println!("Debugging disabled");
    }

    #[cfg(debug_assertions)]
    println!("Debugging enabled");

    #[cfg(not(debug_assertions))]
    println!("Debugging disabled");

    example();
}

此配置标志被命名为在这一讨论中执行此操作的正确方法。目前已经没有更合适的内置条件了。

来自参考文献

debug_assertions -在不进行优化的情况下编译时默认启用。这可以用于在开发中启用额外的调试代码,但不能在生产中使用。例如,它控制标准库的debug_assert!宏的行为。

另一种稍微复杂一些的方法是使用#[cfg(feature = "debug")]并创建一个为机箱启用“调试”功能的构建脚本,如这里所示。

票数 173
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39204908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档