Palabra clave externa de C ++ en funciones. ¿Por qué no solo incluir el archivo de encabezado?

Si lo entiendo correctamente, esto significa

extern void foo();

que la función foo se declara en otra unidad de traducción.

1) ¿Por qué no simplemente #incluir el encabezado en el que se declara esta función?

2) ¿Cómo sabe el enlazador dónde buscar la función en el tiempo de enlace?

editar: Tal vez debería aclarar que la declaración anterior se sigue utilizando la función

foo();

Nunca se define en esta unidad de traducción.

Respuestas a la pregunta(5)

Su respuesta a la pregunta