Я возиться с setjmp
и longjmp
, внедряя с ними простую систему исключений try / catch. setjmp
вернет целое число 0
при первом его вызове и вернет любое другое значение, которое вы передадите в вызов longjump
в противном случае.
Однако в соответствии с этим ресурсом, который, как я полагаю, основан на стандарте C99 , на самом деле не разрешено (в строгом C99) считывать результат setjmp
и сохранять его в переменной .
Из-за этого, а также из-за того, что мы могли бы хотеть передавать данные, которые отличаются (например, больше, чем) от целого числа от longjmp
до setjmp
, я ищу альтернативы для передачи данных (целое число или ( указатель на а) структуру) обратно.
Как мы можем это сделать (сохраняя соответствие стандартам, то есть не создавая потоков на территории 'неопределенного поведения')?