Basé sur this question Je comprends le but de la construction dans la liaison des bibliothèques C avec le code C++. Supposons maintenant ce qui suit:Quel est l'effet de la déclaration de «extern» C "'dans l'en-tête d'une bibliothèque partagée C++?
J'ai une bibliothèque partagée '.so' compilée avec un compilateur C++. L'en-tête a un 'typedef stuct' et un certain nombre de déclarations de fonctions. Si l'en-tête comprend la déclaration extern "C" ...
#ifdef __cplusplus
extern "C"
{
#endif
// typedef struct ...;
// function decls
#ifdef __cplusplus
}
#endif
... quel est l'effet? Plus précisément, je me demande s'il y a des effets secondaires néfastes de cette déclaration puisque la bibliothèque partagée est compilée en C++, pas C.
Y a-t-il une raison d'avoir la déclaration externe "C" dans ce cas?
Votre bibliothèque sera-t-elle seulement appelée depuis C++ ou avez-vous besoin de votre bibliothèque pour être appelée depuis C? –