C では、関数が 0 の引数 (空のパラメーター リスト) で定義され、任意の数の引数で呼び出された場合、gcc はエラーを返しません。これはなぜですか?
1064 次
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 に答える