利用宏与for循环特性自动关闭文件描述符,用来避免用户经常忘记关闭文件描述符的问题。
#define Open(...) \
for (int _fd = open(__VA_ARGS__), _i = 1; _i; _i--, _fd >= 0 && close(_fd)) \
if (_fd >= 0)
Open("test.txt", O_RDONLY) {
printf("Success!!!\n");
}
else {
printf("Failed!!!\n");
}
#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;
}