144得票8回答
C 语言中 setjmp 和 longjmp 的实际用法

请问有人可以解释一下在嵌入式编程中,setjmp()和longjmp()函数实际上可以被用于哪些场景吗?我知道它们是用于错误处理的,但我想知道一些具体的用例。

46得票2回答
C++:使用longjmp和setjmp安全吗?

在Linux/GCC上,使用longjmp和setjmp是否安全?以下是需要注意的几点: 异常处理(我没有使用longjmp / setjmp来实现异常处理,我想知道它们对标准异常处理会有哪些副作用) *this指针 信号 智能指针(例如Boost的共享指针和内部指针) 其他任何你能想到的...

30得票1回答
OCaml 内部:异常

我很好奇OCaml运行时如何处理异常,使它们如此轻量级。他们是使用setjmp/longjmp还是在每个函数中返回特殊值并将其传播? 在我看来,longjmp只会在引发异常时对系统造成一点压力,而在检查每个函数返回值时需要在调用函数后检查每个值,这似乎需要进行很多检查和跳转,并且似乎会表现得...

24得票3回答
为什么在setjmp/longjmp中使用volatile关键字是有效的

在调用longjmp()后,如果非易失性限定符的本地对象自调用setjmp()以来可能已经发生变化,则不应访问它们。在这种情况下,它们的值被认为是不确定的,并且访问它们是未定义行为。 现在我的问题是,为什么在这种情况下使用volatile会起作用?即使那个易失性变量发生了变化,longjmp...

23得票6回答
使用longjmp/setjmp进行C语言错误处理有哪些“好”的方法?

我需要在一个项目中使用C语言,考虑使用longjmp/setjmp进行错误处理,因为我认为这样在一个中心位置处理错误比返回代码更容易。如果有关于如何做这件事的一些线索,我会非常感激。 我特别关注在出现任何此类错误时正确执行资源清理。 还有,如何处理多线程程序中产生的错误? 更好的方法是,...

22得票1回答
C ++异常和setjmp / longjmp的成本

我编写了一个测试来测量使用线程的C++异常成本。#include <cstdlib> #include <iostream> #include <vector> #include <thread> static const int N = 10...

21得票2回答
这些被破坏的变量警告有何意义?

我有一个函数,像这样:#include <setjmp.h> jmp_buf buf; void func2(int g); extern int some_global; void func(int x) { if (setjmp(buf)) return...

21得票6回答
从信号处理程序中longjmp跳出?

从这个问题中: 在C语言中使用setjmp和longjmp是好的编程实践吗? 其中两个留言说: “你无法在信号处理程序中抛出异常,但是你可以安全地执行longjmp——只要你知道自己在做什么。- Dietrich Epp 8月31日19:57 @Dietrich:对于您的评论+1。...

21得票2回答
如何在Rcpp中安全地生成R警告

我们知道,在Rcpp中应避免调用Rf_error(),因为它会在堆栈上跨越C++析构函数。这就是为什么我们更喜欢在Rcpp代码中抛出C++异常(例如throw Rcpp::exception("...")或通过stop("...")函数)。但是,R警告也可能导致调用Rf_error()(此行为...

21得票5回答
使用setjmp,longjmp实现多任务处理

是否有使用setjmp和longjmp函数来实现多任务处理的方法?