gpt4 book ai didi

c++ - 当 noexcept 函数尝试在 gcc 或 clang 中调用非 noexcept 函数时启用警告

转载 作者:行者123 更新时间:2023-12-02 10:22:04 27 4
gpt4 key购买 nike

当函数标记为 noexcept 时,GCC 或 Clang 中是否有一个标志会抛出编译时错误(或警告)尝试调用未标记为 noexcept 的函数?

如果不是,那么当您删除 noexcept 时,您应该如何判断代码的哪些部分受到影响?来自之前的 noexcept - 标记功能 ?就没有办法吗?

最佳答案

标记函数 noexcept即使未标记被调用的函数也有意义。举一个简单的例子,比如平方根,如果你传递一个负数,它可能会抛出。在确保仅使用正数调用的函数中使用它时,您可以标记它。如果您捕获异常,则同样适用。

也就是说,拥有一个标记可疑电话的工具是有意义的。我知道 clang 有一个编译器警告,用于抛出 noexcept 函数(直接)。 (请参阅 https://clang.llvm.org/docs/DiagnosticsReference.html#wexceptions )对于我在 constexpr 中工作的自定义断言宏,我已将其抑制,MSVC 也是如此。

对于间接情况,也就是调用未标记的函数,我还没有看到编译器警告。我确实知道 clangd 报告了这一点,很可能是因为 clang-tidy。快速检查它的页面让我相信它是以下检查:https://clang.llvm.org/extra/clang-tidy/checks/bugprone-exception-escape.html

我不能告诉 GCC,因为我用得不够。

关于c++ - 当 noexcept 函数尝试在 gcc 或 clang 中调用非 noexcept 函数时启用警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59676462/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com