在 Visual Studio 中模拟 GCC 的 __builtin_unreachable?

2024-05-02

我见过this https://stackoverflow.com/q/6031819/10147399关于模仿的问题__builtin_unreachable在旧版本的 GCC 中。我的问题正是如此,但针对的是 Visual Studio (2019)。 Visual Studio 是否有类似的功能__builtin_unreachable?是否可以效仿一下?


顺便说一句,之前std::无法访问() http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0627r3.pdf可用,您可以将其实现为独立于编译器的函数,这样您就不必定义任何宏:

#ifdef __GNUC__ // GCC 4.8+, Clang, Intel and other compilers compatible with GCC (-std=c++0x or above)
[[noreturn]] inline __attribute__((always_inline)) void unreachable() {__builtin_unreachable();}
#elif defined(_MSC_VER) // MSVC
[[noreturn]] __forceinline void unreachable() {__assume(false);}
#else // ???
inline void unreachable() {}
#endif

Usage:

int& g()
{
    unreachable();
    //no warning about a missing return statement
}

int foo();

int main()
{
    int a = g();
    foo(); //any compiler eliminates this call with -O1 so that there is no linker error about an undefined reference
    return a+5;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Visual Studio 中模拟 GCC 的 __builtin_unreachable? 的相关文章

随机推荐

  • 如何修复 IntelliJ 中的包名称?

    是否可以修复 IntelliJ 中给定文件夹中的所有包名称 如果手动导入IntelliJ中的文件 其包名全部错误 包括子文件夹 如何批量修复包名 到目前为止 这给我带来了很多悲伤 移动到包或重命名包 这一定是一个错误 Example 如果我
  • Google应用程序脚本忽略数据验证错误

    我有一些具有数据验证规则的工作表可用作下拉列表 当尝试将其他 未经验证的 数据插入这些单元格时 我的代码现在会产生错误 我正在寻找一种方法来忽略数据验证规则并插入数据而不更改已设置的数据验证规则 我只想忽略应用程序脚本错误 您在单元格 U4
  • 创建无模式消息框

    如何创建一个无模式消息框 我是否必须创建自己的 Windows 窗体类并使用它 如果是这样 是否有一种简单的方法来添加警告图标 而不是插入我自己的图像 并根据文本量调整大小 如果您需要一个在代码继续在后台运行时自动显示的消息框 该框仍然是模
  • ActiveRecord 迁移后的括号 [5.1] 是什么?它是如何工作的? [复制]

    这个问题在这里已经有答案了 使用生成新迁移时bin rails g migration CreateUser第一行如下所示 class CreateUser lt ActiveRecord Migration 5 1 什么是 5 1 代表什
  • PHPUnit:如何测试调用不同文件中声明的另一个函数的方法

    我正在尝试使用 PHPUnit 测试一个方法 它调用另一个函数 独立功能 无类 它驻留在不同的文件中 它做了一些很好的计算并返回一个对象 这是我实际的主要代码 class CreateRecords public function crea
  • 自定义错误消息在 ASP.NET MVC 4 中未翻译

    我想翻译验证消息 字段日期必须是日期 我已将以下键添加到 Global asax 的 Application Start 中 ClientDataTypeModelValidatorProvider ResourceClassKey Mod
  • 汇编指令陷阱有什么作用?

    当程序需要时 程序通常会发出软件陷阱 由操作系统提供服务 通用异常处理程序 操作系统确定陷阱的原因并做出响应 适当地 汇编指令 trap 和 BASIC 中的 TRAP 指令一样吗 答案似乎是肯定的 你能接受还是拒绝我的结论 不中断 的代码
  • VB.NET 中延迟加载属性中静态局部变量的使用

    我最近刚刚了解了 VB NET 中静态局部变量的使用 并想知道它在延迟加载属性中的潜在用途 请考虑以下示例代码 Public Class Foo Implements IFoo End Class Public Interface IFoo
  • std::string 和 std::vector 之间有什么区别?

    那么主要区别是什么 它们将在哪些情况下使用 vector
  • AngularJS、ocLazyLoad 和加载动态状态

    app define angular angular ui router ocLazyLoad config common layout services menuService function angular use strict va
  • 我是否应该担心内存泄漏以及在 Android 中将 WeakReference 与 Volley 一起使用

    看完之后本文 http www androiddesignpatterns com 2013 01 inner class handler memory leak html 我开始考虑 Volley 的内存泄漏问题 通常 用 Volley
  • iTunes Connect 上的应用程序名称过期

    苹果在iTunes Connect 开发人员指南 https itunesconnect apple com docs iTunesConnect DeveloperGuide pdf says 应用程序名称到期 一旦您创建了应用程序 并且
  • 查找 Java 程序的实际运行时调用树

    假设我有一个包含数百个方法的大程序 根据输入的性质 程序流程正在发生变化 我想我想对原来的流程进行更改 找到调用层次结构 引用并理解流程是一件很大的麻烦 我在 Eclipse 中对此有任何解决方案吗 或者插件 例如 我只需要一个按时间顺序排
  • 使用 inotify-tools 和 unison 获得更好的性能。

    I use inotify tools and unison在机器之间同步文件夹 因为我有一个大文件夹要同步 所以我只是简单地写了一个inotifywait脚本自动完成这项工作 让inotifywait监视大文件夹的子目录以获得更好的性能
  • 一旦我们点击取消按钮,文本字段就会隐藏

    我们正在使用 magento 多供应商网站 我们正在使用以下代码来更新和取消价格 但是一旦我们单击 取消 按钮 文本字段就会隐藏 PHTML span class label pro status span
  • 对于 Web 应用程序结构的最佳实践,您有哪些建议? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我在工作中做了很多定制应用程序 我正在尝试为新应用程序定义一些标准 有点像元素 CSS 你如何组织样式表 我是否应该为整个网站提供一个基本样式表
  • 将密码存储在 TortoiseHg 中

    有没有办法配置乌龟汞 http tortoisehg bitbucket io 存储我的密码 我有一个项目托管在谷歌代码 http code google com 我使用 TortoiseHg 访问 每当我想要将更改推送到 Google 代
  • 如何使用 ODBC 检查数据库是否存在

    各位程序员大家好 我已经在互联网上搜索了几天 但找不到仅使用 ODBC 和 SQL 解决此问题的通用方法 有没有办法查看数据库是否已经存在 仅使用ODBC 它必须是标准 SQL 因为用户可以选择自己选择的 DSN 即他自己的 SQL Ser
  • vue.js keyup, keydown 事件落后一个字符

    我正在使用 keydown keyup 事件 它调用一个 javascript 函数 该函数将输入框的值打印到控制台 以及事件的 currentTarget 字段的值 并且我注意到它晚了一个字符 例如 如果我输入hello进入输入框 我只看
  • 在 Visual Studio 中模拟 GCC 的 __builtin_unreachable?

    我见过this https stackoverflow com q 6031819 10147399关于模仿的问题 builtin unreachable在旧版本的 GCC 中 我的问题正是如此 但针对的是 Visual Studio 20