6
votes

Comment fonctionne l'extérieur "C" dans C ++?

Je vois du code en C ++ en utilisant extern "c" au début du fichier, comme celui-ci: xxx

Qu'est-ce que cela signifie? Comment ça marche?


1 commentaires

Bonnes informations sur extern "c" ici: Stackoverflow.com/Questtions/1041866/...


4 Réponses :


0
votes

Il spécifie une Spécification de liaison .
Il indique à la liaison comment relier le code.

Il est utile lorsque vous voulez Mélangez CO et C ++ Code .


1 commentaires

@Nawaz: Et qui l'a dit? Le "C" est.



4
votes

Ce n'est probablement pas comme ça, mais plus comme:

#ifdef __cplusplus 
extern "C" {} 
#endif


7 commentaires

Mais le code que j'ai vu est: #Ifdef __cplusplus extern "c" {} #endif, alors est-ce faux code?


@Ratzip Ce n'est pas faux, c'est juste du code mort. Ça ne fait rien.


Il indique au compilateur (pas la liaison) d'utiliser C Conventions C pour les fonctions, plutôt que C ++. Cela implique non seulement Nom Mangling, mais également les conventions de dépassement des arguments, et éventuellement d'autres choses aussi.


@Jameskanze Dites-vous que le lien de liaison n'a pas besoin de savoir sur le nom Mangling?


Pas du tout. Les noms de mangles du compilateur. Le linker rejoint les noms que cela a été donné à tous les noms de ses noms.


@spraff ah je vois. Merci pour la clarification.


@LuchianGriggore Pas nécessairement. À propos de la seule fois que la plupart des liaiseurs prennent le nom de mangling en compte sont lorsque vous apportez des messages d'erreur.



0
votes

externe "c" - Avertissez le compilateur, que la fonction notée est compilée dans le style C.


0 commentaires

5
votes

Il est utilisé pour informer le compilateur pour désactiver le nom C ++ Mangirling pour les fonctions définies dans les accolades. http://en.wikipedia.org/wiki/name_mangling


1 commentaires

+1 Vous avez dit en une ligne ce que j'allais dire sur 100. Bien fait.