Je comprends que c'est inline
en soi une suggestion pour le compilateur, et à sa discrétion, il peut ou non intégrer la fonction, et il produira également du code objet pouvant être lié.
Je pense que cela static inline
fait la même chose (peut ou non en ligne) mais ne produira pas de code d'objet pouvant être lié lorsqu'il est en ligne (car aucun autre module ne peut y être lié).
Où extern inline
s'inscrit-il dans l'image?
Supposons que je veuille remplacer une macro de préprocesseur par une fonction en ligne et exiger que cette fonction soit intégrée (par exemple, parce qu'elle utilise les macros __FILE__
et __LINE__
qui devraient résoudre pour l'appelant mais pas cette fonction appelée). Autrement dit, je veux voir une erreur de compilateur ou de l'éditeur de liens au cas où la fonction ne serait pas intégrée. Le extern inline
fait-il? (Je suppose que, si ce n'est pas le cas, il n'y a aucun moyen d'obtenir ce comportement autre que de s'en tenir à une macro.)
Existe-t-il des différences entre C ++ et C?
Existe-t-il des différences entre les différents fournisseurs et versions de compilateurs?