C语言如何实现RAII
资源的获取与释放,C语言里面是要让程序员考虑的,比如
void work(){
Buffer b;
init(b);
do_sth(b);
del(&b);
};
在C++里面,有raii这样很方便的特性,当离开作用域的时候,自动释放资源,如
void work(){
Buffer b;
do_sth(b);
};
我在想,如何让C支持这样的特性?于是就有了下面这个宏
#define using(b) \
for(int i=0; i<2; i++){\
if (i==0) \
{ init(b); } \
else \
{ if (i==1) \
{ del(b); \
break; \
}; \
};
void work() {
Buffer b;
using(&b)
printf("working..\n");
};
};
edit: 被批了,C就按照C的方式干活,RAII交给C++.
建立时间: 2010/10/29 14:25:00
blog comments powered by Disqus