Le langage C ++ permet le mélange de C ++ et C dans un fichier source. Par exemple,
extern "C" {
struct bar { /* ... */ }
}
Est-ce que C ++ ou a-t-il déjà pris en charge d'autres "langages de liaison" autres que C? par exemple extern "Pascal"
ouextern "Haskell"
programming-languages
c++
c
dkaranovich
la source
la source
extern "C"
équivalent pour interagirextern "C"
affecte uniquement le lien, pas la syntaxe et la sémantique du texte à l'intérieur du bloc. En d'autres termes, c'est toujours du C ++ à l'intérieur de ceextern "C"
bloc; les noms des symboles ne sont tout simplement pas mutilés. Voir stackoverflow.com/q/1041866/712605Réponses:
extern "C"
peut être le seul requis:Cependant, d'autres peuvent exister selon cette citation:
la source
Dans de nombreux (la plupart) des environnements, "extern" C "est la convention de liaison par défaut pour n'importe quelle langue du système.
Ainsi, selon le système d'exploitation et l'implémentation de la langue "étrangère" "extern C" est tout ce dont vous avez besoin pour appeler un programme dans une autre langue compilée.
la source
extern "Language"
syntaxe " ", ils le font via l'extension C spécifique à la plate-forme, donc pour C ++ c'est toujours justeextern "C"
et le spécial Le mot-clé spécifie les différentes conventions d'appel.G ++ à un moment donné pris
extern "Java"
en charge pour interagir avec le code Java compilé par GCJ./programming/15167867/extern-java-block-in-gcc
la source
Non! C ++ ne prend en charge que C en tant que «langages de liaison».
extern "C" {struct bar {/ * ... * /}}
La syntaxe comme ci-dessus signifie que ne change pas le nom de la variable, de la structure ou de la fonction. Parce que C ++ peut changer le nom de la variable, de la structure ou de la fonction pour implémenter la surcharge de classe, d'espace de nom et de fonction.
Si vous ne le faites pas, l'éditeur de liens peut ne pas trouver l'objet de la variable, la structure de la fonction.
C ++ est conçu pour être compatible avec C. Le "C" externe est le moyen d'implémenter compatible avec C.
la source
extern "C"
etextern "C++"
sont les seuls obligatoires, mais les implémentations sont autorisées à en fournir d'autres.