Basado en this question Entiendo el propósito del constructo al vincular bibliotecas C con código C++. Supongamos ahora lo siguiente:¿Cuál es el efecto de declarar "extern" C "'en el encabezado de una biblioteca compartida de C++?
Tengo una biblioteca compartida '.so' compilada con un compilador C++. El encabezado tiene un 'typedef stuct' y un número de declaraciones de función. Si el encabezado incluye la declaración externa "C" ...
#ifdef __cplusplus
extern "C"
{
#endif
// typedef struct ...;
// function decls
#ifdef __cplusplus
}
#endif
... ¿cuál es el efecto? Específicamente, me pregunto si hay efectos secundarios perjudiciales de esa declaración ya que la biblioteca compartida está compilada como C++, no como C.
¿Hay alguna razón para tener la declaración externa "C" en este caso?
¿Su biblioteca solo se llamará desde C++ o también necesita que su biblioteca se llame desde C? –