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?