c语言的异常处理
利用setjmp和longjmp处理异常
c语言种可以利用setjmp和longjmp来实现程序的直接跳转,这种机制并不适用于在程序开发中设计逻辑流程,但用来实现异常处理机制则是非常的适用。
比如写一个实现内存分配的函数,可以这样:
void *allocate(unsigned n) if (new) if (Allocation_handled) //如果new为NULL,则执行到此判断 assert(0); |
而在调用时,可以先设好跳转的“目的地”,再调用allocate:
char *buf; if ( setjmp(Allocate_Failed) ) buf = allocate(1000000); Allocation_handled=0 |
为了使用方便可以把以上setjmp和longjmp做一个宏定义,这里就不细说了。但总的来说这个异常处理机制是不如c++的那么方便,但对于c语言来说也算不错了。
相关文章
- fedora 9 小集 - 01 05, 2009
- 多线程调试 - 12 17, 2008
- fedora 9 试用 - 12 05, 2008
留言: