- 论坛徽章:
- 0
|
本帖最后由 xiao0613cn 于 2018-02-08 18:10 编辑
回复 1# zylthinking
哈,楼主,我也写了一个差不多的,也不需要libstdc++支持,普通gcc编译cpp文件即可用:
- /* godefer():
- FILE *fp = fopen(path);
- if (fp == NULL)
- return;
- godefer(FILE*, fp, fclose(fp));
- ......
- fread, fwrite......
- */
- #define defer_struct(name, type, member, close) \
- struct name { \
- type member; \
- name(type v) :member(v) { } \
- ~name() { close; } \
- type operator->() { return member; } \
- operator type&() { return member; } \
- }
- #define defer_close2(line, type, member, close) \
- defer_struct(ac_##line##_t, type, member, close) ac_##line(member)
- #define defer_close(line, type, member, close) \
- defer_close2(line, type, member, close)
- #define godefer(type, member, close) \
- defer_close(__LINE__, type, member, close)
复制代码 还是楼主的好用,不需要写类型
|
|