君子性非異也,善假于物也。
如有恒,何須三更起,半夜眠;最怕莫,三天打魚(yú)兩天曬網(wǎng),竹籃打水一場(chǎng)空!
posts - 31, comments - 23, trackbacks - 0, articles - 30
C++博客
::
首頁(yè)
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
C中的跳轉(zhuǎn)語(yǔ)句[非goto]
Posted on 2006-11-04 21:18
neter
閱讀(1181)
評(píng)論(4)
編輯
收藏
引用
所屬分類:
程序設(shè)計(jì)
?1
#include?
<
stdio.h
>
?2
#include?
<
setjmp.h
>
?3
jmp_buf?buf;
?4
?5
static
?
void
?babana()
?6
{
?7
????printf(
"
in?babana()\n
"
);
?8
????longjmp(buf,
1
);
?9
????printf(
"
never?see?me\n
"
);
10
}
11
12
int
?main()
13
{
14
????
if
(setjmp(buf))
15
????
{
16
????????printf(
"
back?in?main\n
"
);
17
????}
18
????
else
19
????
{
20
????????printf(
"
first?time?through\n
"
);
21
????????babana();
22
????}
23
????
return
?
0
;
24
}
?setjmp()首先被調(diào)用,并且返回0.
goto是不能跳出當(dāng)前函數(shù)的,而longjmp甚至可以跳到其他文件的函數(shù)中去(估計(jì)就是為什么要在名字里加個(gè)long的原因吧,:)).
但 longjmp只能跳回到曾經(jīng)去過(guò)的地方,而setjmp正是標(biāo)記到過(guò)的地方,所以從這角度來(lái)想的話,longjmp更像是"從何處來(lái)"而不是goto"去哪里".
這也可以所就是C++中" catch "," throw "?的一個(gè)起源吧.
Feedback
#
re: C中的跳轉(zhuǎn)語(yǔ)句[非goto]
回復(fù)
更多評(píng)論
2006-11-06 10:54 by
藍(lán)色feel's Blog
沒(méi)有用過(guò)
但是跨函數(shù)的跳轉(zhuǎn)會(huì)不會(huì)出問(wèn)題呢
棧上東西怎么辦?
#
re: C中的跳轉(zhuǎn)語(yǔ)句[非goto]
回復(fù)
更多評(píng)論
2006-11-06 11:18 by
shaohua
to:@藍(lán)色feel's Blog
不會(huì)出問(wèn)題的;
這個(gè)只是用于跳轉(zhuǎn)的,棧上的數(shù)據(jù)當(dāng)然就是離開(kāi)后被銷毀了啊,沒(méi)有辦法做保存的.
#
re: C中的跳轉(zhuǎn)語(yǔ)句[非goto]
回復(fù)
更多評(píng)論
2006-11-07 10:37 by
藍(lán)色feel's Blog
嗯,剛才實(shí)驗(yàn)了一下,此話只對(duì)了一半
確實(shí)是被銷毀了,但是沒(méi)有調(diào)用析構(gòu)函數(shù)
而C++中 throw catch 是能夠?qū)I系膶?duì)象正確析構(gòu)的
#include <iostream>
#include <stdio.h>
#include <setjmp.h>
jmp_buf buf;
class Foo
{
public:
Foo() { std::cout << "Ctor" << std::endl; }
~Foo(){ std::cout << "Dtor" << std::endl; }
};
static void babana()
{
Foo foo;
printf( " in babana()\n " );
longjmp(buf, 1 );
printf( " never see me\n " );
}
int main()
{
if (setjmp(buf))
{
printf( " back in main\n " );
}
else
{
printf( " first time through\n " );
babana();
}
return 0;
}
#
re: C中的跳轉(zhuǎn)語(yǔ)句[非goto]
回復(fù)
更多評(píng)論
2006-11-07 10:47 by
shaohua
to:@藍(lán)色feel's Blog
的確正如你說(shuō)的那樣的,但我們平常一般都不會(huì)顯式地去釋放棧上的內(nèi)存的,如果一定要這樣做的話也是沒(méi)有錯(cuò)的,但其實(shí)沒(méi)有多大的必要的,因?yàn)橄到y(tǒng)自己會(huì)對(duì)棧進(jìn)行很好的管理的.
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
[轉(zhuǎn)]Win32應(yīng)用程序中進(jìn)程間通信方法分析與比較
BCD碼
[轉(zhuǎn)]編寫(xiě)高效的數(shù)據(jù)庫(kù)連接池
[MSDN]使用連接池
[轉(zhuǎn)]VC中基于 Windows 的精確定時(shí)
基于 Visual C++6.0 的 DLL 編程實(shí)現(xiàn)
[后記](méi)大瓶子與小瓶子的問(wèn)題
大瓶子與小瓶子的問(wèn)題
用C描述MD5算法
初識(shí)MD5算法
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
Powered by:
C++博客
Copyright © neter
日歷
<
2006年10月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
公告
如有侵犯您的版權(quán),請(qǐng)來(lái)信告知,我將立即刪除,謝謝!
隨筆分類
程序設(shè)計(jì)(21)
狂人日記(10)
文章分類
Android相關(guān)(1)
軟件測(cè)試初探(5)
數(shù)字圖像(11)
探索嵌入式開(kāi)發(fā)(4)
網(wǎng)絡(luò)與通信(3)
英語(yǔ)學(xué)習(xí)(6)
不錯(cuò)的站點(diǎn)
codeguru
codeproject
csdn
vchelp
搜索
積分與排名
積分 - 42392
排名 - 517
最新評(píng)論
1.?re: [轉(zhuǎn)]編寫(xiě)高效的數(shù)據(jù)庫(kù)連接池
不錯(cuò)
--tianliang
2.?re: JPEG壓縮編碼標(biāo)準(zhǔn)[未登錄](méi)
good!
--123
3.?re: 初中英語(yǔ)語(yǔ)法學(xué)習(xí)順口溜
Thank you
--inliner
4.?re: [轉(zhuǎn)]圖像處理網(wǎng)絡(luò)資源[未登錄](méi)
好東西哪,,,。。
--可可
5.?re: JPEG壓縮編碼標(biāo)準(zhǔn)
很不錯(cuò)啊,有些地方講的很不清楚,這個(gè)很好
--沙田西瓜
閱讀排行榜
1.?MFC中獲取程序運(yùn)行的路徑(2836)
2.?[轉(zhuǎn)]編寫(xiě)高效的數(shù)據(jù)庫(kù)連接池(1839)
3.?文件系統(tǒng)監(jiān)控(1595)
4.?C中的跳轉(zhuǎn)語(yǔ)句[非goto](1181)
5.?簡(jiǎn)單文件分割(06川大考研最后一題)(803)
精品熟女少妇AV免费久久
|
精品视频久久久久
|
久久综合九色综合网站
|
久久夜色精品国产噜噜麻豆
|
热久久视久久精品18
|
区久久AAA片69亚洲
|
热re99久久精品国产99热
|
一本伊大人香蕉久久网手机
|
欧美一级久久久久久久大
|
国内精品伊人久久久久AV影院
|
99热成人精品免费久久
|
无码人妻久久一区二区三区免费
|
亚洲äv永久无码精品天堂久久
|
国产精品久久久久免费a∨
|
久久成人国产精品二三区
|
久久精品亚洲AV久久久无码
|
久久久精品午夜免费不卡
|
狠狠综合久久综合88亚洲
|
久久综合九色综合久99
|
国产91久久综合
|
久久亚洲AV成人出白浆无码国产
|
色青青草原桃花久久综合
|
久久久久女教师免费一区
|
99久久亚洲综合精品成人
|
精品国产乱码久久久久久1区2区
|
国产精品久久久香蕉
|
香蕉久久影院
|
久久久青草青青国产亚洲免观
|
久久国产精品国产自线拍免费
|
久久精品国产亚洲av麻豆小说
|
久久久久99精品成人片牛牛影视
|
国内精品久久人妻互换
|
无码久久精品国产亚洲Av影片
|
亚洲中文字幕久久精品无码喷水
|
久久99精品久久久久久9蜜桃
|
久久精品国产秦先生
|
久久99热国产这有精品
|
国产成人精品久久综合
|
国产精品激情综合久久
|
久久久久亚洲AV无码去区首
|
久久影视综合亚洲
|