C/C++黑魔法-自动关闭文件描述符 发表于 2019-03-07 利用宏与for循环特性自动关闭文件描述符,用来避免用户经常忘记关闭文件描述符的问题。 Open宏定义123#define Open(...) \ for (int _fd = open(__VA_ARGS__), _i = 1; _i; _i--, _fd >= 0 && close(_fd)) \ if (_fd >= 0) 用法123456Open("test.txt", O_RDONLY) { printf("Success!!!\n");}else { printf("Failed!!!\n");} 源码123456789101112131415161718#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;}