С goto всё предельно ясно. То ли дело -- longjmp. Кстати вполне метод избавиться от goto и дурной привычки возвращать ошибки в возвращаемых значениях функций. Если написать для C макросов на тему try и catch. Но тут есть негативные отличия от C++ некоторые...