Por que precisamos extern "C" {#include <foo.h>} em C ++? [duplicado

Esta pergunta já tem uma resposta aqui:

Qual é o efeito do "C" externo em C + 3 respostas

Por que precisamos usar:

extern "C" {
#include <foo.h>
}

Especificamente

Quando devemos usá-lo?

O que está acontecendo no nível do compilador / vinculador que exige que nós o utilizemos?

Como, em termos de compilação / vinculação, isso resolve os problemas que exigem que nós a usemo

questionAnswers(10)

yourAnswerToTheQuestion