Dlaczego błąd - wywołanie funkcji przed jej zadeklarowaniem nie jest wyświetlany?

main()
{
    f();
}
int f( int i, float fl)
{
    printf("function");
}

Dlaczego powyższy kod działa poprawnie w 'C' i drukujefunction kiedy powinien zgłosić błąd, jakf () jest wywoływany przed ogłoszeniem.

Gdy działa poprawnie w 'C', to dlaczego nie w 'C ++'. Gdy działa w c ++, pokazuje:error: 'f' was not declared in this scope

Jeśli jest tak, ponieważ kompilator zakłada niezadeklarowaną funkcję zwracającą int i akceptującą nieokreśloną liczbę argumentów, to dlaczego działa poprawnie dla poniższej funkcji (tj. Po zwróceniu typu zwracanego dounieważnić zamiastint ?

void f (int i, float fl)

{

    printf("function");

}

questionAnswers(3)

yourAnswerToTheQuestion