Передача большего количества данных, чем int между setjmp () + longjmp () - PullRequest
0 голосов
/ 04 мая 2018

Я возиться с setjmp и longjmp, внедряя с ними простую систему исключений try / catch. setjmp вернет целое число 0 при первом его вызове и вернет любое другое значение, которое вы передадите в вызов longjump в противном случае.

Однако в соответствии с этим ресурсом, который, как я полагаю, основан на стандарте C99 , на самом деле не разрешено (в строгом C99) считывать результат setjmp и сохранять его в переменной .

Из-за этого, а также из-за того, что мы могли бы хотеть передавать данные, которые отличаются (например, больше, чем) от целого числа от longjmp до setjmp, я ищу альтернативы для передачи данных (целое число или ( указатель на а) структуру) обратно.

Как мы можем это сделать (сохраняя соответствие стандартам, то есть не создавая потоков на территории 'неопределенного поведения')?

...