Каков эффект объявления «внешнего« C »» в заголовке к общей библиотеке C ++?
На основеэтот вопрос Я понимаю цель конструкции в связывании библиотек C с кодом C ++. Теперь предположим следующее:
У меня есть общая библиотека '.so', скомпилированная с помощью компилятора C ++. Заголовок имеет 'typedef stuct' и ряд объявлений функций. Если заголовок включает внешнюю декларацию "C" ...
#ifdef __cplusplus
extern "C"
{
#endif
// typedef struct ...;
// function decls
#ifdef __cplusplus
}
#endif
... каков эффект? В частности, мне интересно, есть ли какие-либо вредные побочные эффекты этого объявления, поскольку разделяемая библиотека скомпилирована как C ++, а не C.
Есть ли какая-либо причина иметь внешнюю "C" декларацию в этом случае?