Je vois du code en C ++ en utilisant Qu'est-ce que cela signifie? Comment ça marche? P> P> extern "c" code> au début du fichier, comme celui-ci:
4 Réponses :
Il spécifie une Il est utile lorsque vous voulez
Il indique à la liaison comment relier le code. p>
@Nawaz: Et qui l'a dit? Le "C" code> est.
Ce n'est probablement pas comme ça, mais plus comme:
#ifdef __cplusplus
extern "C" {}
#endif
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.
externe "c" code> - Avertissez le compilateur, que la fonction notée est compilée dans le style C. P>
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 P>
+1 Vous avez dit en une ligne ce que j'allais dire sur 100. Bien fait.
Bonnes informations sur extern "c" ici: Stackoverflow.com/Questtions/1041866/...