0

だから私は最近、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 でも当てはまりましたか? この「機能」のユースケースについて洞察を与えることはできますか?

4

1 に答える 1