【发布时间】:2012-08-09 04:53:04
【问题描述】:
为了清楚,请查看我的示例
我有两个文件:main.cpp 和 myfunction.h
这是 main.cpp
#include <setjmp.h>
#include <myfunction.h>
int main()
{
if ( ! setjmp(bufJum) ) {
printf("1");
func();
} else {
printf("2");
}
return 0;
}
这是我的函数.h
#include <setjmp.h>
static jmp_buf bufJum;
int func(){
longjum(bufJum, 1);
}
现在,我想要我的屏幕打印“1”,然后打印“2”,但此代码不正确! 请帮我! 非常感谢!
【问题讨论】:
-
请告诉我们实际发生了什么,而不是仅仅说它不起作用。它会崩溃吗?它什么都不输出吗?有什么,但是有什么不对吗?如果有,是什么?
-
我很惊讶你在构建这个时没有收到错误,因为你定义了变量
bufJum两次,和拼写longjmp错误! 1:不要将定义放在头文件中; 2:如果要从多个源文件中访问一个变量,不要设为static; 3:避免setjmp/longjmp成为瘟疫!它不能很好地与 C++ 配合使用,如果您不非常小心,实际上会产生许多奇怪的运行时错误。 -
另外,说“此代码不正确”不足以描述问题。 当你编译/链接/运行它时会发生什么?如果有错误消息,请将它们(逐字,即复制粘贴)添加到问题中。此外,您没有使用
setjmp/longjmp是多个文件,因为您将一个文件包含到另一个文件中,编译器实际上只会看到一个文件。跨度> -
你们都不懂我的问题!问题是“如何在多个文件中使用 setjum 和 longjmp”。 setjum 在一个文件中,longjmp 在另一个文件中。我用代码更清楚地解释了我的想法。这不是“如何正确运行我的代码”在不同的文件中使用 setjum 和 longjum 时是否可能。如果可能的话,该怎么做?对不起我的英语。
-
虽然它在不同的文件中为你,编译器将它视为唯一的一个文件,因为pre -处理器
#include指令。所以它真的不是多个文件!此外,在描述问题时,不要只说它不起作用,而是说发生了什么。
标签: c++ exception-handling goto setjmp