вторник, 27 ноября 2012 г.

Мысль о goto в C++

В С++ нет столь удобной конструкции finally. Как бы печально то ни было, но это так. Есть подход с написанием define-а на finally в таком духе:

#define finally(FUNC) \
catch ( ... ) \
{ \
MLASTERROR;\
  FUNC\
  throw; \
} \
FUNC

Можно использовать goto. Как бы там Дейкстра его ни критиковал, в таком месте написать "один маааленький goto" (с) xkcd - можно и даже нужно. В метку по нему можно свалить освобождение ресурсов, условный вывод ошибок и все прочее, что должно делаться в С# в блоке finally.
А, картинка кстати вот:


Комментариев нет:

Отправить комментарий