Maison >développement back-end >C++ >Quand dois-je utiliser `extern 'C'` en C ?

Quand dois-je utiliser `extern 'C'` en C ?

DDD
DDDoriginal
2024-11-29 17:45:111032parcourir

When Should I Use `extern

Comprendre la nécessité d'un "C" externe en C

C et C partagent des similitudes dans la syntaxe, mais leurs processus de compilation divergent considérablement. La compilation d'un fichier d'en-tête avec un compilateur C attend du code C. Cependant, lors de l'inclusion d'un en-tête conforme aux normes C, il devient nécessaire de le définir explicitement à l'aide de la directive "extern "C"".

Cette directive demande au compilateur de supposer que l'en-tête suit le binaire de l'application C. Interface (ABI). Sans cela, l'éditeur de liens peut rencontrer des incompatibilités, car l'ABI de C modifie généralement les noms de fonctions avec une modification des noms.

Pour résoudre ces problèmes, suivez ces étapes :

  1. Quand pour utiliser extern "C" : utilisez "extern "C"" lors de l'inclusion d'un fichier d'en-tête C dans un C programme.
  2. Comportement du compilateur/lien : L'utilisation de "extern "C"" signale au compilateur que l'en-tête inclus suit l'ABI de C. Cela empêche la modification des noms et garantit la compatibilité avec les fonctions qui attendent des structures de données C.
  3. Solution de compilation/liaison : en spécifiant "extern "C"", le compilateur traite l'en-tête sous forme de code C, éliminer l'inadéquation entre le C ABI attendu et le C ABI modifié. Cela permet une liaison transparente des fonctions C au sein d'un programme C.

N'oubliez pas que pour la plupart des en-têtes système, la directive "extern "C"" est déjà présente, car elle est conçue pour prendre en charge l'inclusion à la fois dans C et le code C. Par conséquent, il est crucial d'utiliser cette directive lors de l'inclusion manuelle des en-têtes C pour éviter les erreurs potentielles de l'éditeur de liens.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn