Maison > développement back-end > C++ > Quelle est la différence entre `inline`, `extern inline` et `static inline` en C et C ?

Quelle est la différence entre `inline`, `extern inline` et `static inline` en C et C ?

Barbara Streisand
Libérer: 2024-12-24 04:14:15
original
568 Les gens l'ont consulté

What's the Difference Between `inline`, `extern inline`, and `static inline` in C and C  ?

Que fait extern inline ?

Contrairement à inline et static inline, extern inline est utilisé dans un contexte spécifique :

Dans les compilateurs antérieurs à C99, en particulier GCC, inline n'avait pas de sémantique définie. Cependant, GCC a implémenté la fonction en ligne pour indiquer au compilateur d'intégrer la fonction si possible. Malgré cette suggestion, une version hors ligne de la fonction était toujours émise et restait visible de l'extérieur.

Pour remédier à cette limitation, GCC a introduit extern inline et static inline.

GNU89 :

  • inline : Peut être en ligne, mais un la version hors ligne est toujours émise et visible de l'extérieur.
  • extern inline : Ne génère pas de version hors ligne, mais peut en appeler une depuis une autre unité de compilation.
  • static inline : Ne génère pas de version hors ligne visible de l'extérieur, mais peut générer un fichier statique un.

C99 (ou GNU99) :

  • inline :Semblable à GNU89 externe en ligne, aucune fonction visible de l'extérieur est émis.
  • extern inline :Semblable à GNU89 en ligne, un code visible de l'extérieur est émis, permettant à une seule unité de traduction de l'utiliser.
  • statique en ligne : Semblable à GNU89 statique en ligne, aucun symbole externe ni appel à un n'est émis.

C :

  • Les fonctions en ligne doivent être définies de manière identique dans toutes les unités de compilation.
  • Il n'existe pas de définition standard pour extern inline ou static inline, mais certains compilateurs fournissent ces constructions basées sur le modèle GNU89.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal