Les inlines en C++

Dernière mise à jour le 12 novembre 2009 à 12:48 par marlalapocket
Publié par mamiemando


Signification


Le mot-clé inline est utilisé en C++ et s'applique à une fonction. Il indique au compilateur que chaque appel à la fonction inline devra être remplacé par le corps de cette fonction. Afin de générer un exécutable de taille raisonnable, il est donc en pratique utilisé pour des fonctions "courtes" en terme de nombre d'instructions.

Le mot clé inline présente l'avantage d'accélérer un programme si celui-ci fait régulièrement appel à la fonction inline. Il permet de condenser sensiblement le code, en particulier pour les accesseurs d'une classe. Un accesseur de classe est typiquement une fonction d'une ligne

Exemple 1


main.cpp
#include <iostream>
inline void ma_fonction(){
  std::cout << "j'aime les tapirs" << std::endl;
}

class ma_structure_t{
  protected:
    int x;
  public:
    ma_structure_t(int x0):x(x0){}
    inline int get_x() const{
      return x;
    }
};

int main(){
  ma_fonction();
  ma_structure_t s(7);
  std::cout << s.get_x() << std::endl;
  return 0;
}

Inline et headers


Le inline permet de déclarer et d'implémenter des fonctions directement dans un header (.hpp) sans risque de multi-définition. En effet le symbole de la fonction inline n'apparaît jamais explicitement au moment du linkage puisque les appels à cette fonction ont tous été remplacés. Rappelons que si une fonction n'est pas inline, est implémentée dans un header, et que ce header est inclus à plusieurs endroits, le compilateur retournera une erreur de définition multiple.

Rappelons qu'hormis les fonctions templates, seules les fonctions inline peuvent être implémentées dans le header. Une fonction template peut tout à fait être inline.

Si l'on veut coder une fonction inline déclarée dans un header (.hpp) mais implémentée dans un fichier source (.cpp) seul le prototype du header doit comporter le mot clé inline.

Exemple 2


fichier.hpp
inline void f();

fichier.cpp :
#include <iostream>
#include "fichier.hpp"

void f(){
  std::cout << "plop !" << std::endl;
}
Meilleures réponses pour « Les inlines en C++ » dans :
Langage C++ - Les fonctions Voir La notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
Langage C++ - Les types de données Voir Les types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
La compilation et les modules en C et en C++ VoirCet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...
Les piles en langage C VoirLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage...
[Langage C] C/C++ Erreur de segmentation VoirQu'est ce qu'une erreur de segmentation Vous êtes en train de développer une application sous Linux en C/C++. Tout va bien, ça compile, les oiseaux chantent. Donc vous lancez votre application pour la tester. Et vous obtenez l'un de ces deux...
Télécharger Visual C++ Express VoirVisual C++ Express est une version "gratuite" et allégée de Visual Studio ; l'utilisation requiert l'inscription sur le site de Microsoft. Cet environnement de développement permet de créer des application Win32 ou du .NET C.
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Langage C - Les opérateurs VoirQu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...
Collection CommentÇaMarche.net