longjmp/setjmp

這是一組有趣的 api, 一般性的用法,是先使用 setjmp 設定 break point, 之後要跳回來的時候,就使用 longjmp.
所以,用法大概是這樣…

#include <stdio.h>
#include <setjmp.h>
jmp_buf setjmp_buffer;
int
main( int argc, char* argv[] )
{
if( setjmp( setjmp_buffer ) == 0 )
{
// do something
printf(“longjmp!!\n”);
longjmp( setjmp_buffer, 1 ); // 用 0 的話, setjmp() 就會收到 0, 那麼可能會無窮回圈
}
else
{
// do something
printf(“after longjmp.\n”);
}
}

很簡單吧,應該也可以兜出 try … catch … finally 的用法.
下面是我大致的想法

int exception_id;
if( ( exception_id = setjmp( setjmp_buffer ) ) == 0 ) // try
{
// do something
longjmp( setjmp_buffer, 1 ); // throw
}
else
{
if( exception_id == 1 ) // catch( 1 )
{
}
if( exception_id == 2 ) // catch( 2 )
{
}
// ….
}
// 之後,就是 finally…

之後再參考書看看吧… ^^

spam

在新浪部落格上發現的…
莫名其妙….指為了作論文,就來搞垃圾迴響??
不能認同,不能認同…砍!!

Dear blogger,
您好,我是中國文化大學新聞研究所研究生。我希望以研究台灣blog(台灣譯作部落格)的現況分析作為我的畢業論文,研究的目的在於了解blog書寫者的書寫動機、生活型態與書寫行為。
為了解台灣blog書寫者的真實的狀況,需要您的寶貴意見,盼望您能夠花10分鐘填寫這份問卷,協助我完成這項調查。
若您方便,也請幫忙將網頁問卷轉寄給有寫blog的人好嗎?
謝謝您!
我的研究主題是:”Weblog書寫動機、生活型態與書寫行為關聯性研究”
問卷網址:(略)
文化大學研究生敬上