Die C ++ - Sprache ermöglicht das Mischen von C ++ und C in einer Quelldatei. Beispielsweise,
extern "C" {
struct bar { /* ... */ }
}
Unterstützt C ++ oder hat es jemals andere "Verknüpfungssprachen" als C unterstützt? zB extern "Pascal"
oderextern "Haskell"
programming-languages
c++
c
dkaranovich
quelle
quelle
extern "C"
Äquivalent tun, um miteinander zu interagierenextern "C"
Betrifft nur die Verknüpfung, nicht die Syntax und Semantik des Texts im Block. Mit anderen Worten, es ist immer noch C ++ in diesemextern "C"
Block. Die Symbolnamen werden einfach nicht entstellt. Siehe stackoverflow.com/q/1041866/712605Antworten:
extern "C"
kann die einzige erforderliche sein:Es können jedoch auch andere nach diesem Zitat existieren:
quelle
In vielen (meisten) Umgebungen ist "extern" C "die Standardverknüpfungskonvention für jede Sprache im System.
Abhängig vom Betriebssystem und der Implementierung der "fremden" Sprache "extern C" genügt es also, ein Programm in einer anderen kompilierten Sprache aufzurufen.
quelle
extern "Language"
" erforderlich ist und C nicht die Syntax hat, geschieht dies über eine plattformspezifische C - Erweiterung, so dass es für C ++ immer noch nurextern "C"
und das Besondere ist Das Schlüsselwort gibt die unterschiedliche Aufrufkonvention an.G ++ wird irgendwann für
extern "Java"
die Interaktion mit GCJ-kompiliertem Java-Code unterstützt.https://stackoverflow.com/questions/15167867/extern-java-block-in-gcc
quelle
Nein! C ++ unterstützt nur C als "Verknüpfungssprache".
extern "C" {Strukturleiste {/ * ... * /}}
Die obige Syntax bedeutet, dass der Name der Variablen, Struktur oder Funktion nicht geändert wird. Weil C ++ möglicherweise den Namen von Variablen, Strukturen oder Funktionen ändert, um eine Überladung von Klassen, Namespaces und Funktionen zu implementieren.
Wenn Sie dies nicht tun, kann der Linker möglicherweise das Objekt der Variablen und der Funktionsstruktur nicht herausfinden.
C ++ ist so konzipiert, dass es mit C kompatibel ist. Das externe "C" ist der Weg, um kompatibel mit C zu implementieren.
quelle
extern "C"
undextern "C++"
sind die einzigen obligatorischen, aber Implementierungen dürfen andere bereitstellen.