问题与longjmp
我想使用longjmp来模拟goto指令。我有一个包含struct类型元素的数组DS(int,float,bool,char)。我想跳到标有“lablex”的地方,其中x是DS [TOP] .int_val。我怎么处理这个?
示例代码:
...
jmp_buf *bfj;
...
stringstream s;s<<"label"<<DS[TOP].int_val;
bfj = (jmp_buf *) s.str();
longjmp(*bfj,1);
但是我认为它有问题我该怎么办?
错误:
output.cpp:在函数'int main()'中:
output.cpp:101:错误:从类型'std :: basic_string,std :: allocator>'转换为无效的类型'__jmp_buf_tag(*)[1]'
没有找到相关结果
已邀请:
5 个回复
荤碗
您使用longjmp()的问题如下: 你不要调用setjmp() 您尚未在堆栈上或动态分配jmp_buf。 jmp_buf * bfj只是一个指针。 你不能将char *转换为jmp_buf *并期望它能够工作。 C ++不是静态编译的动态语言。 但实际上,你根本不可能使用longjmp()。
布埃郝卞簿
屠创氓读叔
浆错
这会将DS [TOP] .int_value视为一个地址并跳转到它。如果你想跳到DS [TOP] .int_value所在的位置,你会:
无论哪种方式,丑陋,丑陋的代码。但它应该做你想要的。
拭十年