由于 C 不支持方法重载,怎么可能有像 一样的方法open
,它显式地提供了两种不同的签名:
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
我printf
的意思是,使用 支持不同数量的参数vargs
,但除了使用自身的参数之外没有明确的签名——否则每个可能的调用都vargs
应该有一个签名。然而,正如我所推测的那样,它是用 C 语言编写的,并提供了两个明确的签名。printf
open()
我实际上并没有得到这些功能的实现方式。有人可以展示一个函数如何的小例子:
void foo() { printf("bar\n"); }
void foo(int x) { printf("bar %d\n", x); }
将在 C 中实现?