我刚刚发现open()(man 2 open)系统调用有两个版本:
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
Run Code Online (Sandbox Code Playgroud)
实际上,可以在单个C文件中使用它们,两者都可以工作.标准C如何实现这一目标?
小智 6
实际上,这不是C ++风格的函数重载。只是open()可变的:
int open(const char *fname, int flags, ...);
Run Code Online (Sandbox Code Playgroud)
而且只有“标志”需要它时,它才会寻找第三个参数。
它可以作为一个可变参数函数来完成。
POSIX 文档是这样open指定的:
int open(const char *path, int oflag, ...);
Run Code Online (Sandbox Code Playgroud)