1

C では、関数が 0 の引数 (空のパラメーター リスト) で定義され、任意の数の引数で呼び出された場合、gcc はエラーを返しません。これはなぜですか?

4

3 に答える 3

-2

次のコードを検討してください。

//void Test(int a);

int main()
{
  int a = 0;
  Test();
  return 0;
}

コンパイラはそれTestが任意の数の引数を取り、int. これは「暗黙の宣言」とも呼ばれます。この廃止された C 言語の機能は決して使用しないでください。

最初の行のコメントを外すと、void Test(int a);これ以上コンパイルされません。コンパイラは、それTestが を返し、int正確に 1 つのint引数を取る関数であることを認識しTest()、引数なしで呼び出すと、呼び出し時の引数が一致しないため、コンパイラがエラーをスローする可能性があるためです。宣言されたときの関数の引数。

ここで質問をすることができます: そもそもなぜ暗黙の宣言が許可されているのでしょうか? まあ、それは言語が設計された方法です。IMO 設計ミスです。

于 2016-03-15T08:14:49.257 に答える