手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

C 学习要点

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
longjmp

void OZ()

{

printf("there 's no placelike home\n");

longjmp(kansas, 47);

}

jmp_buf kansas;

int main(int argc, char* argv[])

{

if(setjmp(kansas)==0) OZ();

else printf(" I have a dream..\n");

return 0;

}//
执行完OZ()后,会立即跳转到printf(" I have a dream..\n");执行

setjmp()
是个特别的函数,当被调用的时候,他吧当前的进程状态的相关信息放到buff中,并返回0;假如使用longjmp对同一个buff操作,这就像再次从setjmp中返回,即正确弹出setjmp的后端。这时返回值对于longjmp是第二个参数,所以能发现实际上从longjum中返回了。

34
异常定制和抛出

class up{};

class fit{};

void g();

void f(int i) throw (up, fit)

{

switch(i)

{

case 1: throw up();

case 2: throw fit();

}

g();

}

void g(){throw 47;}

void my_unexpected()

{

printf("unexpected handle!\n");

exit(1);

}

int main(int argc, char* argv[])

{

set_unexpected(my_unexpected);

for(int i=1;i<=3;i )

{

try{ f(i);}

catch(up) {printf("catch up\n");}

catch(fit){printf("catch fit\n");}

}

return 0;

}

set_unexpected
配置处理系统不认识的异常情况(缺省是中断)(异常处理安装器缺省指向terminate())。上面我们定义了upfit两种异常抛出类,并抛出了这两种异常,来捕获。抛出异常时也生成了异常的一个对象。Catch(…){}

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!