Это используется для решения проблем искажения имен. extern C означает, что функции находятся в «плоском» C-стиле API.
от вопрос уже есть ответ здесь:
Какое влияние оказывает extern «C» в C ++? 13 ответовПочему мы должны использовать:
extern "C" {
#include <foo.h>
}
В частности:
Когда мы должны использовать это?
Что происходит на уровне компилятора / компоновщика, что требует от нас его использования?
Как с точки зрения компиляции / компоновки это решает проблемы, которые требуют от нас его использования?