C はメソッドのオーバーロードをサポートしていないため、open
2 つの異なるシグネチャを明示的に提供する のようなメソッドをどのようにして持つことができるでしょうか。
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
つまり、 を使用してさまざまなprintf
数の引数をサポートしますが、それ自体vargs
を使用するもの以外に明確な署名はありません。それ以外の場合は、可能な呼び出しごとに 1 つの署名が必要です。それでも、私が推測するように、C で書かれており、2 つの明示的な署名を提供しています。vargs
printf
open()
これらの機能の実装方法は実際にはわかりませんでした。誰かが関数がどのように機能するかの小さな例を示すことができますか:
void foo() { printf("bar\n"); }
void foo(int x) { printf("bar %d\n", x); }
Cで実装されますか?