Was bewirkt die Deklaration von "extern" im Header für eine gemeinsam genutzte C ++ - Bibliothek?

Beyogen aufdiese Frag Ich verstehe den Zweck des Konstrukts beim Verknüpfen von C-Bibliotheken mit C ++ - Code. Nehmen wir nun folgendes an:

Ich habe eine ".so" -Freigabebibliothek mit einem C ++ - Compiler kompiliert. Der Header hat einen 'typedef stuct' und eine Reihe von Funktionsdeklarationen. Wenn der Header die externe "C" -Deklaration enthält ...

#ifdef __cplusplus
extern "C"
{
#endif

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

#ifdef __cplusplus
}
#endif

... was ist der Effekt? Insbesondere frage ich mich, ob es irgendwelche schädlichen Nebenwirkungen dieser Deklaration gibt, da die gemeinsam genutzte Bibliothek als C ++ kompiliert wird, nicht als C.

Gibt es in diesem Fall einen Grund für die externe "C" -Deklaration?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage