首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++:[[maybe_noreturn]]

C++:[[maybe_noreturn]]
EN

Stack Overflow用户
提问于 2022-02-07 15:42:59
回答 1查看 116关注 0票数 5

据我所知,在[[maybe_noreturn]]中没有C++属性。

我有一个像这样的函数:

代码语言:javascript
复制
void func() {
    try {
        do_something();
    } catch (const std::exception& e) {
        std::exit(1);
    }
}

如果我将func标记为[[noreturn]],我就会遇到UB,因为这是一个令人高兴的情况。当我不从未标记为[[noreturn]]的函数返回时,是UB吗?

或者是否有其他语言结构、编译器扩展或库实现类似于[[maybe_noreturn]]的东西?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-07 15:50:09

当我没有从一个没有标记为[ not ]的函数返回时,

是UB吗?

不,不管程序是否有[[noreturn]]属性,从函数中终止程序都是很好的定义。在合适的情况下,使用[[noreturn]]是可选的--即当函数无条件终止时--但是在这种情况下总是推荐使用它。

不需要像[[maybe_noreturn]]这样的属性。如果有必要,您将发现必须声明任何可能调用[[maybe_noreturn]]函数的函数为[[maybe_noreturn]],然后是调用这些函数的函数,直到调用链的顶部。

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

https://stackoverflow.com/questions/71021339

复制
相关文章

相似问题

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