inline n'est pas une fonctionnalité que j'utilise tous les jours, car je n'ai pas l'habitude d'utiliser les outils proposés par C99. Une recherche dans la norme ainsi que sur des sites comme celui-ci montre qu'il y a une grande différence sémantique entre le inline C99 et le inline C++. Il semble que la bonne façon de procédé soit la suivante:
1) La fonction suivante doit être déclarée dans un fichier d'entête est inclu dans les unités de compilation qui utilisent cette fonction:
1 2 3 4
| inline int f(int x)
{
return x;
} |
2) La déclaration externe suivante est réalisée dans exactement une unité de compilation (fichier .c):
extern inline int f(int x);
Comme beaucoup de fonctionnalités de C99, il semble que inline ne soit pas toujours implanté de manière conforme. C'est d'ailleurs la misère de beaucoup de fonctionnalités de C99 et la raison pour laquelle je me limite généralement à C90 si la portabilité du code est un enjeu.
Avec mes meilleures salutations
Thierry
Partager