¿Por qué una declaración vacía funciona para definiciones con argumentos int pero no para argumentos flotantes?

Pensé que la diferencia es quedeclaration no tiene tipos de parámetros ...

Por qué funciona esto:

int fuc();

int fuc(int i) {
  printf("%d", i);
  return 0;
}

pero esto falla compilando:

int fuc();

int fuc(float f) {
  printf("%f", f);
  return 0;
}

con el mensaje:

error: tipos en conflicto para "fuc". nota: un tipo de argumento que tiene una promoción predeterminada no puede coincidir con una declaración de lista de nombre de parámetro vacía

Respuestas a la pregunta(3)

Su respuesta a la pregunta