I want to use longjmp to simulate goto instruction.I have an array DS containing elements of struct types (int , float, bool ,char). I want to jump to the place labled “lablex” where x is DS[TOP].int_val. how can I handle this?
sample code :
...
jmp_buf *bfj;
...
stringstream s;s<<"label"<<DS[TOP].int_val;
bfj = (jmp_buf *) s.str();
longjmp(*bfj,1);
but as I thought it’s having problem what should I do?
error:
output.cpp: In function ‘int main()’:
output.cpp:101: error: invalid cast from type ‘std::basic_string, std::allocator >’ to type ‘__jmp_buf_tag (*)[1]’
You probably don’t want to use longjmp at all but I hate it when people answer a question with “Why would you want to do that?” As has been pointed out your longjmp() usage is wrong. Here is a simple example of how to use it correctly:
The problems with your usage of longjmp() are as follows:
But really, it is very unlikely that you should be using longjmp() at all.