- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
int i = 0;
init1();
++i;
if (!isFailed1()) goto clean_up;
init2();
++i;
if (!isFailed2()) goto clean_up;
init3();
++i;
if (!isFailed3()) goto clean_up;
goto end:
clean_up:
switch(i) {
case 3:
cleunUp3();
case 2:
cleunUp2();
case 1:
cleunUp1();
}
end:
можно еще делать do { } while (0); с брейками, вместо goto
только афтар ошибся, ему надо делать ++i только лишь когда init был успешен
говнокод только в понимании с++
Как бы это и так в разделе С++, при том что автор считает, что RAII не нужен, если есть это.
Местные жители говорят, что китайцев незаметно.
тут на днях собираются запретить праворуких японок, так что о дальнем востоке можно забыть