だから私は最近、Hacker News で関数ポインターについて少し読んでいて、void foo()
とvoid foo(void)
が同等のプロトタイプではないという事実に気づきました。だから、私はこれが実際に真実であることを確認することに着手しました:
int foo()
{
return 0;
}
int main()
{
return foo(1,2,3,4);
}
案の定、このコードは警告なしでコンパイルされます..このコードはエラーをスローします:
int foo(void)
{
return 0;
}
int main()
{
return foo(1,2,3,4);
}
これは非常にエラーが発生しやすいようです。inの署名...
など、「任意の量の引数」についても考えましたprintf
int printf ( const char * format, ... );
これは C89 や K&R でも当てはまりましたか? この「機能」のユースケースについて洞察を与えることはできますか?