"inline" in c++
salam , s'il vous plait quel est le role du qualificatif "inline" devant la déclaration d'une fonction membre en c++?
je suis en attente de vos réponses favorables**
je suis en attente de vos réponses favorables**
1 réponse
-
Tout est là :
https://forums.commentcamarche.net/forum/affich-37604414-les-inlines-en-c
Bonne chance-
-
En fait une fonction inline est substituée à la compilation par son code. Le principal intérêt que je vois c'est de pouvoir implémenter des fonctions triviales (accesseurs) directement dans le ".hpp" sans quoi des multi-définitions pourraient avoir lieu si ce header est inclu à plusieurs endroits.
L'autre intérêt de inline c'est que grâce à cette substitution tu évites un appel de fonction (pas besoin d'empiler les paramètres sur la pile etc...) donc tu gagnes un peu en perfomances. Par contre le code peut devenir plus volumineux puisque le code de la fonction inline est "dupliqué" à plusieurs endroits. C'est pourquoi on le réserve surtout aux fonctions "courtes" et appelées fréquemment. -
-
Pardon tu as raison j'ai mal compris ta question. Il faut que la fonction soit déclarée et implémentée dans le .hpp. Sinon ça ne compile pas (il n'y a pas de symbole vers f, donc au moment de linker la fonction qui appelle f, ça plante).
a.hpp
#ifndef A_HPP #define A_HPP #include <iostream> inline void f() { std::cout << "plop" << std::endl; } #endif
b.cpp
#include "a.hpp" int main() { f(); return 0; }
Bonne chance -
-