IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Affichage des résultats du sondage: Que pensez-vous du mot-clé inline aujourd'hui :

Votants
36. Vous ne pouvez pas participer à ce sondage.
  • c'est toujours d'actualité : je conseille de l'utiliser.

    16 44,44%
  • c'est devenu obsolète : à oublier !

    20 55,56%
Langage C++ Discussion :

Intérêt de "inline" de nos jours : pour ou contre ?


Sujet :

Langage C++

  1. #21
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Mais, ceci dit, il faut savoir que de nombreux outils de profiling éprouvent des problèmes avec les fonctions inline et que, de toutes manières, la perte de temps due à l'empilement des appels tient en définitive à quelques cycles d'horloges...
    Pour moi, le gros avantage de l'iniling (manuel ou décidé par l'ordinateur) tient au moins autant à la possibilité d'optimiser le code au delà de la frontière de l'appel de fonction qu'à la suppression de cet appel.

  2. #22
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel Voir le message
    Ce qui me gêne toujours avec ce mot-clé, c'est que selon moi il procure une fausse bonne conscience et détourne des véritables sujets d'optimisation en encourageant le développeur à se focaliser sur des setter / getter au lieu de se pencher sur sa gestion mémoire par exemple.
    Si l'inlining a pour effet que l'on ajoute des getters/setters à ses classes malgré le fait que ça en diminue l'encapsulation, je considère ça comme un effet négatif

  3. #23
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Mais, ceci dit, il faut savoir que de nombreux outils de profiling éprouvent des problèmes avec les fonctions inline et que, de toutes manières, la perte de temps due à l'empilement des appels tient en définitive à quelques cycles d'horloges...
    C'est plus que le compilateur ne laisse pas forcément ces informations ! GCC est bien connu pour ça, même le débuggage de programmes en O3 peut être pénible. En revanche, les infos de Visual Studio sont toujours complètes (au moins de ce que j'ai pu voir).
    Enfin, quand tu codes proprement et que tu as des boucles sur des millions d'éléments, tu es bien content de la suppression des appels, car un appel signifie sauvegarde des registres, passage des arguments sur la pile, et idem à la sortie. Quand ta fonction interne est courte, tu peux avoir des facteurs d'accélération impressionnants.

  4. #24
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Au fait, question bête, tu as répondu quoi à "virtual inline" ?

  5. #25
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Pour moi, le gros avantage de l'iniling (manuel ou décidé par l'ordinateur) tient au moins autant à la possibilité d'optimiser le code au delà de la frontière de l'appel de fonction qu'à la suppression de cet appel.
    Sauf que tu ne peux jamais être certain de l'inlining, la directive pouvant être ignorée par le compilateur. La seule chose sûre avec l'inlining, c'est que tu peux garantir (par l'absence de directive et les options de compilation adéquates) qu'une fonction que tu ne veux pas inliner ne le sera effectivement pas... Ceci n'a toutefois guère d'intérêt de façon générale, sauf si l'on doit compiler en faveur de la taille du code binaire bien sûr (ce qui est un cas relativement rare, tout de même).

    Du coup, si tu as un code réellement critique à optimiser, où l'inlining offre réellement des gains mesurables, il vaut souvent mieux transformer ta fonction inline en bonne vieille macro... C'est la seule manière d'assurer à 100% une traduction en inline quel que soit le compilateur et/ou les flags de compilation.

  6. #26
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Du coup, si tu as un code réellement critique à optimiser, où l'inlining offre réellement des gains mesurables, il vaut souvent mieux transformer ta fonction inline en bonne vieille macro... C'est la seule manière d'assurer à 100% une traduction en inline quel que soit le compilateur et/ou les flags de compilation.
    Franchement, le compilateur sait très bien faire tout seul cela (comme je l'ai déjà dit, sur un code critique, l'inlining automatique m'a fait gagné un facteur 10), je ne vois pas l'intérêt de perdre le typage pour introduire des erreurs (surtout que si c'est une macro, soit c'est suffisamment court pour que le compilo inline à coup sûr, soit c'est trop gros pour que ça ne soit pas dangereux d'être une macro).

  7. #27
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Du coup, si tu as un code réellement critique à optimiser, où l'inlining offre réellement des gains mesurables, il vaut souvent mieux transformer ta fonction inline en bonne vieille macro... C'est la seule manière d'assurer à 100% une traduction en inline quel que soit le compilateur et/ou les flags de compilation.
    Si je suis un jour dans cette situation (et je ne m'y suis encore jamais trouvé), je préfèrerai à coup sur utiliser des mots clefs spécifiques à un compilateur (__forceinline par exemple avec VC++) qu'une macro...

  8. #28
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Je me pose une question à propos de ces inline.
    Etant donné que :
    préciser qu'une fonction est inline n'est qu'une suggestion au compilateur, qui n'est pas obligé de la suivre
    quand on ne précise pas inline, le compilateur peut tout de même rendre la fonction inline si il trouve cela judicieux

    Du coup, quel est l'intérêt de préciser inline puisque le compilateur n'en fait de toute façon "qu'à sa tête" ? (j'exagère un peu, je me doute que quand on lui suggère il y a plus de chances que la fonction devienne inline que quand on ne lui suggère pas, néanmoins inline reviendrait en fait à dire, "augmente de 15% la probabilité que cette fonction devienne inline" ?)

    Corrigez moi si je me trompe.

  9. #29
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Le seul intérêt est qu'il n'exporte pas le nom de la fonction en dehors de l'unité de compilation. Donc ça permet de pallier à des erreurs de conception.

  10. #30
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Matthieu Brucher Voir le message
    Le seul intérêt est qu'il n'exporte pas le nom de la fonction en dehors de l'unité de compilation. Donc ça permet de pallier à des erreurs de conception.
    Il y a des choses qui m'échappent :
    - si le compilateur ne suit pas le conseil qu'on lui donne de mettre une fonction inline, le nom de la fonction sera "exporté en dehors de l'unité de compilation" non ?
    - pourquoi le fait de ne pas "exporter le nom de la fonction en dehors de l'unité de compilation" pallie les erreurs de conception ?

    Edit: c'est la fin de la semaine, j'avais écrit volatile à la place de inline...

  11. #31
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Matthieu Brucher Voir le message
    Franchement, le compilateur sait très bien faire tout seul cela (comme je l'ai déjà dit, sur un code critique, l'inlining automatique m'a fait gagné un facteur 10), je ne vois pas l'intérêt de perdre le typage pour introduire des erreurs (surtout que si c'est une macro, soit c'est suffisamment court pour que le compilo inline à coup sûr, soit c'est trop gros pour que ça ne soit pas dangereux d'être une macro).
    Je parle bien de code réellement critique, pas juste de l'inlining automatique "classique".
    De façon générale, tu as raison, et/ou il peut être intéressant de voir les options spécifiques des compilateurs (à condition qu'ils en aient, cependant).

    Passer en macro, c'est surtout pour passer outre tout flag de compilation et/ou spécificités du compilateur. Comme cela peut être difficile à maintenir, c'est bien entendu à réserver aux cas très pointus le demandant.

  12. #32
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par thetux Voir le message
    Il y a des choses qui m'échappent :
    - si le compilateur ne suit pas le conseil qu'on lui donne de mettre une fonction volatile, le nom de la fonction sera "exporté en dehors de l'unité de compilation" non ?
    Non. Elle est inline, elle a pour vocation de ne pas être exportée.
    Citation Envoyé par thetux Voir le message
    - pourquoi le fait de ne pas "exporter le nom de la fonction en dehors de l'unité de compilation" pallie les erreurs de conception ?
    Dans le cas où cette fonction vit dans un en-tête, le inline est indispensable, mais c'est une erreur de débutant qu'on essaie de masquer.

  13. #33
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 380
    Points : 41 576
    Points
    41 576
    Par défaut
    Mais il y a des fonctions qui ont vocation à être dans un en-tête: Notamment, certaines fonctions utilisées en complément d'une macro (ben oui, on ne peut pas toujours se débarrasser complètement de ces dernières).

    Et puis, ne pas oublier que tout le monde ne compile pas en LTCG, sans compter les cas où la LTCG ne sert à rien (distribution de bibliothèque). Dans ces cas, l'inlining automatique n'est pas possible, et seule reste l'option de définir la fonction en inline dans un header...

  14. #34
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 627
    Points : 30 692
    Points
    30 692
    Par défaut
    Citation Envoyé par thetux Voir le message
    Il y a des choses qui m'échappent :
    - si le compilateur ne suit pas le conseil qu'on lui donne de mettre une fonction volatile, le nom de la fonction sera "exporté en dehors de l'unité de compilation" non ?
    - pourquoi le fait de ne pas "exporter le nom de la fonction en dehors de l'unité de compilation" pallie les erreurs de conception ?
    "Simplement" parce que l'on a trop souvent tendance à perdre demeter de vue...

    Lorsque tu crées une classe ou une fonction template, nous sommes d'accord avec le fait que c'est pour te permettre de l'adapter en fonction du type de donnée réellement manipulée.

    Mais les manipulations adaptées à une données particulière ne devrait se trouver que dans une unité de compilation donnée, les autres unités de compilation devraient se "contenter" de savoir que l'on peut effectivement utiliser la fonction.

    Dans l'idéal, tu devrais donc avoir une séparation claire entre la déclaration des fonctions template et leur implémentation.

    Pour la grosse majorité des unités de compilation, seule la connaissance de l'existence des classes et des fonctions est suffisante, l'implémentation ne les intéressant normalement pas.

    Un fichier d'en-tête proche de
    MyClass.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    /* ce fichier ne fait que déclarer les fonctions et définir la classe, et ce
     * devrait être suffisant pour une grosse majorité des unités de compilation
     */
    template <class T>
    class MyClass
    {
        public:
            MyClass();
            ~MyClass();
            void foo();
            static void bar();
        private:
            T data;
            int truc;
            static Type machin;
    };
    Tu aurais une implémentation séparée proche de
    MyClass.tpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    //il faut bien que le compilateur connaisse la classe
     
    #include <MyClass.h> 
    template <class T>
    Type MyClass<T>::machin=Type();
    template <class T>
    MyClass<T>::MyClass():data(),truc(0){}
    template <class T>
    MyClass<T>::~MyClass(){}
    template <class T>
    void MyClass<T>::foo()
    {
        /*...*/
    }
    template <class T>
    void MyClass<T>::bar()
    {
        /*...*/
    }
    Et enfin, tu aurais une unité de compilation qui manipule explicitement MyClass en déterminant le type de T et étant seule responsable de la gestion de la spécialisation effective:
    OtherClass.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    /* selon le cas, l'un ou l'autre sont envisageable */
    template <class T> class MyClass; 
    class OtherClass 
    {
        public:
            /*...*/
        private: 
           MyClass<int> obj;
    };
    /* OU   -   OU   - OU */
    #include <MyClass.h>
    class OtherClass : public MyClass<OtherClass> //par exemple
    {
        public:
            /*...*/
        private: 
    };
    OtherClass.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /* pour ne fournir l'implémentation de MyClass<int> qu'à cette unité de 
     * compilation
     */
    #include <MyClass.tpp>
    /* implémentation des fonctions et des membres statiques de OtherClass */
    Au pire, la connaissance des possibilités offertes par MyClass pour un type particulier ne devrait passer que par la connaissance de l'unité de compilation qui manipule effectivement ce type d'objet

  15. #35
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Mais il y a des fonctions qui ont vocation à être dans un en-tête: Notamment, certaines fonctions utilisées en complément d'une macro (ben oui, on ne peut pas toujours se débarrasser complètement de ces dernières).

    Et puis, ne pas oublier que tout le monde ne compile pas en LTCG, sans compter les cas où la LTCG ne sert à rien (distribution de bibliothèque). Dans ces cas, l'inlining automatique n'est pas possible, et seule reste l'option de définir la fonction en inline dans un header...
    Rien n'oblige cette fonction à devoir être inlinée, LTCG ou pas. Et le fait que la fonction est utilisée en complément de macro, je ne vois pas le rapport...

  16. #36
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Merci koala51. Je t'applaudis, je ne sais pas comment tu fais pour trouver le temps et la patience de répondre autant dans les détails à chaque fois.

  17. #37
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 380
    Points : 41 576
    Points
    41 576
    Par défaut
    Citation Envoyé par Matthieu Brucher Voir le message
    Rien n'oblige cette fonction à devoir être inlinée, LTCG ou pas. Et le fait que la fonction est utilisée en complément de macro, je ne vois pas le rapport...
    Je retire ce que j'ai dit concernant les macros.

    Mais le fait reste que si tu veux que certaines fonctions soient inlinées quand le compilateur le décide, il ne faut pas oublier les barrières qui l'empêchent. Si tu veux que l'optimisation traverse ces barrières, définir ces fonctions dans les headers (et donc, les déclarer static (sale!) ou inline (fait pour)) devient indispensable.

  18. #38
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Mais le fait reste que si tu veux que certaines fonctions soient inlinées quand le compilateur le décide, il ne faut pas oublier les barrières qui l'empêchent. Si tu veux que l'optimisation traverse ces barrières, définir ces fonctions dans les headers (et donc, les déclarer static (sale!) ou inline (fait pour)) devient indispensable.
    Ou encore mieux, bien concevoir son architecture de code.
    C'est une problématique que je connais bien car le code qu'on a ici peut potentiellement facilement avoir ce souci (et je ne parle pas naturellement qu'en C++, mais aussi en Fortran où inline n'existe pas). On arrive toujours à restructurer son code correctement de sorte à ne plus avoir ce problème.

  19. #39
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    inline et extern/static c'est orthogonal.
    Une fonction inline non static est tout de même extern, c'est juste qu'elle a un linkage "faible" (i.e. l'éditeur de liens se fiche d'avoir plusieurs définitions, il va considérer qu'elles sont toutes les mêmes)

  20. #40
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 380
    Points : 41 576
    Points
    41 576
    Par défaut
    Citation Envoyé par Matthieu Brucher Voir le message
    Ou encore mieux, bien concevoir son architecture de code.
    C'est une problématique que je connais bien car le code qu'on a ici peut potentiellement facilement avoir ce souci (et je ne parle pas naturellement qu'en C++, mais aussi en Fortran où inline n'existe pas). On arrive toujours à restructurer son code correctement de sorte à ne plus avoir ce problème.
    Donc, tu soutiens qu'il est toujours possible d'avoir un projet où aucun composant ne propose à un autre composant de service qu'il serait plus approprié d'inliner (genre, un bête accesseur en lecture) ?

    @loufoque: En théorie. Mais ça ne change rien au fait qu'un appel traversant une "frontière" (unité de compilation quand la LTCG est désactivée, bibliothèques autrement) ne sera pas inliné.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo