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

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

DDD
Libérer: 2024-11-29 17:45:11
original
1103 Les gens l'ont consulté

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal