Maison >développement back-end >C++ >Quelle est la différence entre `inline`, `static inline` et `extern inline` en C et C ?
Comprendre extern inline
Dans les langages de programmation C, les fonctions en ligne offrent une astuce au compilateur pour potentiellement optimiser le code en insérant directement le corps de la fonction au point d'invocation plutôt que de générer un appel de sous-programme distinct.
Différences entre les variations
Dans K&R C et C89, il n'y avait pas de sémantique standard pour l'inline, mais de nombreux compilateurs la prenaient en charge avec différentes interprétations. GCC a introduit trois variantes : en ligne, en ligne statique et en ligne externe.
C99 et GNU99
Dans C99, la sémantique de extern inline a été révisée pour refléter le comportement en ligne de GNU89. Inline et static inline sont restés les mêmes.
C
En C , les fonctions en ligne doivent avoir la même définition partout où elles sont utilisées. Plusieurs définitions du même symbole sont gérées par le compilateur/éditeur de liens. Ni static inline ni extern inline ne sont définis en C , bien que certains compilateurs puissent les prendre en charge.
Assurer l'inline avec extern inline
Dans votre scénario spécifique, où vous avez besoin de l'inline pour les fonctions utilisant les macros FILE et LINE, extern inline ne le fait pas garantir que la fonction sera intégrée. Cependant, il s’agit de l’équivalent C99 le plus proche pour obtenir ce comportement souhaité. Si la fonction n'est pas intégrée, le compilateur ou l'éditeur de liens peut générer une erreur.
Différences entre le compilateur et le fournisseur
Le comportement des différents fournisseurs et versions du compilateur peut varier, donc il est toujours conseillé de consulter la documentation spécifique à votre environnement.
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!