Por que o erro de - chamar a função antes de ser declarado, não é mostrado?

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

Por que o código acima é executado com sucesso em 'C' e imprimefunction quando deve relatar um erro, comof () está sendo chamado antes de ser declarado.

Quando ele está sendo executado com sucesso em 'C', por que não em 'C ++'? Quando rodando em c ++ ele está mostrando:error: 'f' was not declared in this scope

Se é por causa de algo como o compilador assume uma função não declarada para retornar um int e aceitar um número não especificado de argumentos, então por que ele é executado com sucesso para a função abaixo também (ou seja, ao retornar o tipo de retorno paravazio ao invés deint ?

void f (int i, float fl)

{

    printf("function");

}

questionAnswers(3)

yourAnswerToTheQuestion