Je comprends que c'est inlineen 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 inlinefait 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 inlines'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 inlinefait-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?