2007-12-25から1日間の記事一覧

goto では、デストラクタは呼ばれる

僕は、goto が嫌いだ。まあ、好きな人なんていないとは思うが。一度でも“今は亡き前任者の goto”に泣かされたことがあれば、全ての goto 文は「goto HELL;」にしか見えなくなるはずだ。“goto 文の全てが悪いわけではない”、“多重ループからの脱出には goto …

C++ で longjmp() 関数を使ってはならない

longjmp() 関数を使うと C でも例外処理っぽいことができるわけだが、これは、間違っても C++ プログラム中では使ってはならない。まあ、C++ には本物の例外処理があるので使うわけもないのだが、C との混合プログラミング*1の際などには注意を要する。 問題…

longjmp() 関数と例外処理

C 言語の野放図なパワーを見せつけてくれるのが longjmp() 関数だ。とりあえず、サンプルコードを見てみよう: #include <setjmp.h> #include <stdio.h> void f(jmp_buf jmpBuf) { puts("f() called."); longjmp(jmpBuf, 1); } int main() { jmp_buf jmpBuf; setjmp(jmpBuf); put</stdio.h></setjmp.h>…