gpt4 book ai didi

c - 为什么 'man 2 open'说有两种open呢?

转载 作者:IT王子 更新时间:2023-10-29 00:22:30 26 4
gpt4 key购买 nike

我在输入 man 2 open 时遇到了这个问题。它说有两种open,一种有两个args,一种有三个!上次我检查过我们不能重载 C 中的函数。他们是怎么做到的?他们是用 C++ 编写的吗?

int open(const char * pathname, int flags);
int open(const char * pathname, int flags, mode_t mode);

最佳答案

不,他们只是使用可变参数函数。

int open(const char * pathname, int flags, ...);

这使得最后一个参数 mode 可选。原型(prototype)仅显示应如何使用该功能,而不是实际的界面。

当然,与真正的重载不同,编译器无法对mode 参数进行类型检查,因此用户必须格外小心以确保仅传递 2 或 3 个参数,并且第 3 个参数必须成为 mode_t


顺便说一句,如果您检查 BSD(包括 OS X)的 man 2 open,它会显示 correct prototype as above .

关于c - 为什么 'man 2 open'说有两种open呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3953895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com