[an error occurred while processing this directive] [an error occurred while processing this directive]
И я еще робко попытаюсь.(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено abivan 15 ноября 2001 г. 21:35
В ответ на: Господа фанаты структурного программирования ! Кто что имеет возразить против приведеного примера ? Как переписать его лучше без goto? отправлено Linuxoid 15 ноября 2001 г. 19:13

вместо
goto bailout;
можно просто кусок повторить.
Я так и делал когда I2c библиотеку писал

Хороший оптимизирующий компилятор(я работаю с HiTech )
сам объединит повторяющиеся куски и поставит goto.

Текста больше, зато наглядность лучше. Не надо для понимания метку искать. Сразу видно какие действия производятся при аварийном возврате.

Текст можно сократить

#define ReturnErr(x) sdahi(adap);/
sclhi(adap);/
return x;

и вместо
goto bailout;
писать ReturnErr(-ENODEV);
тоже видно, что аварийный возврат.

2 вариант: можно просто вернуть ошибку, а наверху выполнить ее обработку.

А вот примерчик из CHip/Bit интересно было бы посмотреть.

С уважением, Иван

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru