Flux rss
Collection CommentCaMarche.net

Les inlines en C++

Publié par mamiemando, dernière mise à jour le jeudi 9 octobre 2008 à 13:26:42 par Nilou17


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;
}

Résultats pour Les inlines en C++

[css] display inline (Résolu) Bonjour, Je cherche à aligner en ligne deyx DIV qui se suivent. Seulement je dois mal m'y prendre (pas très doué en css je dois le dire) et au lieu que ces deux DIV soit alignées, elle se retrouve l'une en dessous de l'autre. Voici mon... www.commentcamarche.net/forum/affich-4157682-css-display-inline
Langage C++ - Les fonctions 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... www.commentcamarche.net/contents/cpp/cppfonc.php3
Problème de compatibilité Firefox/CSS (Résolu) Bonjour à tous, Je suis récement passé à firefox alors que j'utilisais internet explorer avant celà. J'avais à l'époque un site qui passait très bien sous explorer et que j'ai décidé de dépoussiérer un peu. Or j'ai été surpris... www.commentcamarche.net/forum/affich-2619402-probleme-de-compatibilite-firefox-css

Résultats pour Les inlines en C++

Liens utiles assembleur x86Voici quelques liens utiles pour l'assembleur x86. Le but étant de compiler des documents pertinents autant pour ceux qui débutent que pour ceux qui sont à l'aise dans ce domaine. Tutoriels Références complètes Assembleur sous... www.commentcamarche.net/faq/sujet-9899-liens-utiles-assembleur-x86
Les templates en C++Introduction Avantages Inconvénients Quand utiliser des templates ? Que dois-je mettre dans les .hpp et dans les .cpp ? Convention de notations Quelques templates célèbres STL BGL Premiers pas Spécifications de templates Template par... www.commentcamarche.net/faq/sujet-11194-les-templates-en-c

Résultats pour Les inlines en C++

Liste CSS en ligne (Résolu)Bonjour, j'ai une liste de la forme: A B ... je souhaiterais l'afficher en ligne: A B ... j'ai... www.commentcamarche.net/forum/affich-5342898-liste-css-en-ligne
C++ Probleme de Lien entre classes (Résolu)Bonjour, j'ai un probleme de "linkage" quand je lance mon fichier test.cpp ?? j'arrive pas a trouver pourquoi !! ****J'ai une classe qui lit un fichier et retourne le nombre de mots presents**** #include "Liste.h" inline bool... www.commentcamarche.net/forum/affich-5648964-c-probleme-de-lien-entre-classes
Probleme de display (Résolu)Slt, voici mon code : function verifPseudo(pseudo) { if(pseudo) { ... } else if(!pseudo) { document.getElementById(\'div_pseudo\').style.display=inline; } } Seulement, ca ne marche pas, si la variable pseudo est vide, ma div "div_pseudo" ne... www.commentcamarche.net/forum/affich-1887082-probleme-de-display

Résultats pour Les inlines en C++

Logitech Extreme PC Gaming HeadsetFilaire, Cable 3.04 m, Bande passante écouteurs:20-20000 Hz, Divers:With inline volume and mute control, Longueur du cable:3.04 m, Sensibilité du microphone :-39 dBV/Pascal, Type:Micro-casque (PC), Connexion ordinateur:Audio / Mic, Technologie sans... www.commentcamarche.net/guide-achat/logitech-extreme-pc-gaming-headset-623545-fiche-technique
Plantronics Audio 750 DSPFilaire, Bande passante écouteurs: , Contrôle du volume, Divers:Inline volume offers convenient access and control, Type:Micro-casque (PC), Technologie sans-fil:Filaire, Page web du produit:Anglais www.commentcamarche.net/guide-achat/plantronics-audio-750-dsp-993141-fiche-technique

Résultats pour Les inlines en C++

Les caractères spéciauxCodage des caractères spéciaux Les normes HTML demandent de respecter le codage des caractères ASCII 7 bits, c'est-à-dire que les caractères accentués ne sont pas autorisés. Pourtant, les navigateurs actuels reconnaissent les caractères accentués,... www.commentcamarche.net/contents/html/htmlcarac.php3
Code ASCIILe codage des informations Le morse a été le premier codage à permettre une communication longue distance. C'est Samuel F.B.Morse qui l'a mis au point en 1844. Ce code est composé de points et de tirets (un codage binaire en quelque sorte...). Il... www.commentcamarche.net/contents/base/ascii.php3
Carte mèrePrésentation de la carte mère L'élément constitutif principal de l'ordinateur est la carte mère (en anglais « mainboard » ou « motherboard », parfois abrégé en « mobo »). La carte mère est le socle permettant la connexion de l'ensemble des éléments... www.commentcamarche.net/contents/pc/carte-mere.php3