Каков эффект объявления «внешнего« C »» в заголовке к общей библиотеке C ++?

На основеэтот вопрос Я понимаю цель конструкции в связывании библиотек C с кодом C ++. Теперь предположим следующее:

У меня есть общая библиотека '.so', скомпилированная с помощью компилятора C ++. Заголовок имеет 'typedef stuct' и ряд объявлений функций. Если заголовок включает внешнюю декларацию "C" ...

#ifdef __cplusplus
extern "C"
{
#endif

  // typedef struct ...;
  // function decls

#ifdef __cplusplus
}
#endif

... каков эффект? В частности, мне интересно, есть ли какие-либо вредные побочные эффекты этого объявления, поскольку разделяемая библиотека скомпилирована как C ++, а не C.

Есть ли какая-либо причина иметь внешнюю "C" декларацию в этом случае?

Ответы на вопрос(5)

Ваш ответ на вопрос