En C++, une fonction inline a exactement la même sémantique qu'une fonction non-inline :
- On peut prendre son adresse.
- Si elle est implicitement ou explicitement déclarée "extern", elle est réellement externe, comme je l'ai montré avec les variables statiques (et les adresses).
- Elle peut être récursive.
- Surtout, elle a une liaison externe, donc est soumise à la "One Definition Rule" (on hop, on revient à la discussion précédente, d'où celle-ci a "bourgeonnée")
La seule différence avec une fonction non-inline est le fait de la définir dans toute UT où elle est appelée (pour que le compilateur ai une chance de la compiler en-ligne, malgré la compilation séparée).
PS : en C++, on peut aussi prendre l'adresse d'une variable locale déclarée avec en "
register storage class".
Partager