利用宏与for循环特性自动关闭文件描述符,用来避免用户经常忘记关闭文件描述符的问题。
Open宏定义
代码语言:javascript复制#define Open(...)
for (int _fd = open(__VA_ARGS__), _i = 1; _i; _i--, _fd >= 0 && close(_fd))
if (_fd >= 0)
用法
代码语言:javascript复制Open("test.txt", O_RDONLY) {
printf("Success!!!n");
}
else {
printf("Failed!!!n");
}
源码
代码语言:javascript复制#include <stdio.h>
#include <fcntl.h>
#define Open(...)
for (int _fd = open(__VA_ARGS__), _i = 1; _i; _i--, _fd >= 0 && close(_fd))
if (_fd >= 0)
int main(int argc, char *argv[])
{
Open("test.txt", O_RDONLY) {
printf("Success!!!n");
}
else {
printf("Failed!!!n");
}
return 0;
}