jjzjj

noreturn

全部标签

c - 编译 clang 的 <noreturn.h> 和 Windows header 时出现 declspec 错误

我正在尝试在Windows上构建我的项目,这对我来说是第一次。我是该平台的初学者。我正在使用clang-cl来支持C11。原用来源noreturn来自注释永远不会返回的函数。我在编译时遇到了一大堆declspec错误,并尽可能将其缩小到一个微不足道的文件。#include#include无论是自己构建都很好,但他们在一起producealaundrylistoferrors,都是完全相同的类型:__declspecattributesmustbeanidentifierorstringliteral所有这些都对同一宏扩展的变化感到不满:[build]C:\ProgramFiles(x8

c++ - 我可以为 assert() 禁用 GCC 的 noreturn 属性吗

Glibc在assert.h中使用GCC的noreturn属性:externvoid__assert_fail(...)...__attribute__((__noreturn__));这会导致GCC在进入调试器之前优化所有局部变量和this指针。优化甚至发生在-Og级别,并且在-O0级别省略了许多其他有用的优化,以至于测试变得非常缓慢。理想情况下,我只想从那里删除__noreturn__属性。我不在乎我的assert()是否运行得更快,我想看看它在何处以及为何触发。是否有GCC命令行标志或任何其他机制可用于禁用__noreturn__优化,而不禁用其他优化?可运行示例代码:#incl

c++ - 函数的属性是什么意思?

这个C++11语法是什么意思?[[noreturn]]voidf(){throw"error";}C++标准工作草案n3797指出,Thefirstdeclarationofafunctionshallspecifythenoreturnattributeifanydeclarationofthatfunctionspecifiesthenoreturnattribute.Ifafunctionisdeclaredwiththenoreturnattributeinonetranslationunitandthesamefunctionisdeclaredwithoutthenoret

无法定位程序输入点 invalid parameter noinfo noreturn 于动态链接库c: Windows SYSTEM32 MSVCP100.dll 上

问题背景本文错误为在学习PHY6222这款芯片时,点击在线烧录调试工具SocKit_V3.0.3报出的错误问题如图解决方法VisualStudio2010(VC++10.0)解决微软官方网址https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist?view=msvc-170闲言碎语在出现这个问题之前,报错为缺少MSVCP100.dll于是去网上下载然后放在C盘对应文件夹,最后就爆出了标题中出现的错误。然后查到解决办法为命令行下输入sfc/scannowC:\WINDOWS\system32>sfc/scan

swift - 何时以及如何在 Swift 中使用@noreturn 属性?

我在guard-else流的上下文中读取了关键字else之后用花括号括起来的代码块,必须调用标有的函数noreturn属性或使用return、break、continue或throw转移控制。最后一部分很清楚,而第一部分我不太明白。首先,即使您没有声明任何返回类型,任何函数都会返回一些东西(至少是一个空元组)。其次,我们什么时候可以使用noreturn函数?文档是否建议使用noreturn标记一些核心内置方法?Theelseclauseofaguardstatementisrequired,andmusteithercallafunctionmarkedwiththenoreturna

swift - 何时以及如何在 Swift 中使用@noreturn 属性?

我在guard-else流的上下文中读取了关键字else之后用花括号括起来的代码块,必须调用标有的函数noreturn属性或使用return、break、continue或throw转移控制。最后一部分很清楚,而第一部分我不太明白。首先,即使您没有声明任何返回类型,任何函数都会返回一些东西(至少是一个空元组)。其次,我们什么时候可以使用noreturn函数?文档是否建议使用noreturn标记一些核心内置方法?Theelseclauseofaguardstatementisrequired,andmusteithercallafunctionmarkedwiththenoreturna

c++ - abort() 在 VS2010 中不是 __declspec(noreturn)

在我的VS2010拷贝中,stdlib.h包含(第353-355行)_CRTIMP__declspec(noreturn)void__cdeclexit(_In_int_Code);_CRTIMP__declspec(noreturn)void__cdecl_exit(_In_int_Code);_CRTIMPvoid__cdeclabort(void);我觉得奇怪的是abort()上没有noreturn注释。有谁知道这是什么原因?是bug吗?编辑:在VS2008中,它是相同的,但stdlib.h的第371-373行缺少noreturn注释正在触发errorC4716.进一步引用:C+

c++ - abort() 在 VS2010 中不是 __declspec(noreturn)

在我的VS2010拷贝中,stdlib.h包含(第353-355行)_CRTIMP__declspec(noreturn)void__cdeclexit(_In_int_Code);_CRTIMP__declspec(noreturn)void__cdecl_exit(_In_int_Code);_CRTIMPvoid__cdeclabort(void);我觉得奇怪的是abort()上没有noreturn注释。有谁知道这是什么原因?是bug吗?编辑:在VS2008中,它是相同的,但stdlib.h的第371-373行缺少noreturn注释正在触发errorC4716.进一步引用:C+

c++ - 如何将 lambda 的 operator() 声明为 noreturn?

如何将lambda的operator()声明为noreturn?Ideone接受以下代码:#includeintmain(){[]()[[noreturn]]{std::exit(1);}();return0;}Clang3.5拒绝它:error:'noreturn'attributecannotbeappliedtotypes你可以在godbolt中试试:http://goo.gl/vsuCsF哪个是对的?更新:相关的标准部分似乎是5.1.2.5、7.6.3、7.6.4但在阅读后我仍然不是100%清楚(i)什么是正确的行为,(ii)如何将lambda的operator()标记为nor

c++ - 如何将 lambda 的 operator() 声明为 noreturn?

如何将lambda的operator()声明为noreturn?Ideone接受以下代码:#includeintmain(){[]()[[noreturn]]{std::exit(1);}();return0;}Clang3.5拒绝它:error:'noreturn'attributecannotbeappliedtotypes你可以在godbolt中试试:http://goo.gl/vsuCsF哪个是对的?更新:相关的标准部分似乎是5.1.2.5、7.6.3、7.6.4但在阅读后我仍然不是100%清楚(i)什么是正确的行为,(ii)如何将lambda的operator()标记为nor