- 296 名前:デフォルトの名無しさん [2008/02/11(月) 11:05:02 ]
- gotoなしで実現しようとすれば、
ラベルの代わりにフラグ変数を使うことになるだけじゃないか? -- int ret_code = 0; ret_code = !(a_init() ? A_FAILED : 0) && ret_code = !(b_init() ? B_FAILED : 0) && ret_code = !(c_init() ? C_FAILED : 0); switch(ret_code) { case C_FAILED: c_rollback(); case B_FAILED: b_rollback(); case A_FAILED: a_rollback(); } return ret_code; -- かつ、何らかの事情でinit()やrollback()を同一関数内に まとめて書く必要がある場合(式でなく文になる場合) こういうコードは書けないのでgotoするしかない気がする。
|

|