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

C++ Discussion :

[C++] compilation d'une class


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Par défaut [C++] compilation d'une class
    Bonjour,

    Faute d'avoir trouvé, je viens demander votre aide.
    J'aimerai savoir si les compilateur c++ compile également les fonctions membre d'une class non utilisé ?

    Supposons la class suivante :
    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
    class Object
    {
      Object();
      ~Object();
     
      Function();
      Function1();
      ...
      FunctionX();
    }
    main ()
    {
      Object * MyObject = new Object();
      MyObject->Function();
      delete MyObject;
    }
    Est ce que dans cette exemple, l'executable contiendra toute les fonctions déclarée dans la class ?

    Merci d'avance :-)

    Crdlt,

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Je dirais oui pour 2 raisons :

    1/ D'abord il faudrait que le compilateur se rende compte que la fonction n'est pas appellée dans le code. Ce qui est envisageable sur l'analyse d'un source devient franchement long/impossible sur un projet beaucoup plus conséquent. La construction de l'arbre d'appel d'un programme est une chose complexe de même que la détection de code mort (car cela ressemble à du code mort).

    2/ Si je construit une DLL ou une librairie tierce et que j'exporte une classe avec des fonctions bien définie, je ne souhaite pas que le compilateur me supprime ces fonctions sous prétexte qu'il ne juge pas utile de les mettre car il ne voit pas les appels à ces fonctions.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Par défaut
    Tout d'abord merci pour ton aide

    Effectivement, apres un test ( et oui c' tjrs apres avoir possé sa question betement qu'on pense a la solution ) , il semble que tu ais raison.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    main()
    {
    }
    //Cette executable fait 15Ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #incude <iostream>
    main()
    {
    }
    //Cette executable fait 500Ko
    ... Curieu, je continue dans cette logique mais avec le C ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include <stdio.h>
    main()
    {
    }
    //Cette executable fait 15Ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include <stdio.h>
    main()
    {
    puts("Salut");
    }
    //Cette executable fait 15,2Ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
    main()
    {
        puts("Salut :)");
        puts("Salut :)");
    }
    //Cette executable fait 15,2Ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
    main()
    {
        puts("Salut :)");
        printf("Salut :)");
    }
    //Cette executable fait 15,4Ko
    Je crois que c'est claire !

    Dans mon cas, je n'utilise que std::cout. N'y a t'il pas une solution pour utiliser les lib C++ ( std::cout et surtout <<) sans pour auttant ajouter les 500Ko de code de la lib iostream ?

    Suis je obligé de couplé le C++ avec les lib C afin de preservé une certaine legerté?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Citation Envoyé par CR_Gio Voir le message
    Dans mon cas, je n'utilise que std::cout. N'y a t'il pas une solution pour utiliser les lib C++ ( std::cout et surtout <<) sans pour auttant ajouter les 500Ko de code de la lib iostream ?
    Tu veux le beurre et l'argent du beurre la! Non, ce n'est pas possible, et ce n'est qu'un moindre mal. Quand on commence à faire de "vrais" programme, qui utilisent 4-5 biblios au bas mot pour fonctionner, ce n'est pas 500k qu'il faut sacrifier (compter dans les 40 mo pour gtk par exemple). Avec l'évolution des connexions actuelles, ce n'est vraiment pas un problème.
    Si tu dois vraiment faire un programme minuscule, comme moi qui ai du faire un lanceur d'applic il n'y pas longtemps, autant le faire en C en utilisant directement les fonctions de plus bas niveaux de ton système. Mais pour ça il faut que ce soit du facilement maintenable, comprendre un code de quelques centaines de lignes au plus.

  5. #5
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Citation Envoyé par CR_Gio Voir le message
    J'aimerai savoir si les compilateur c++ compile également les fonctions membre d'une class non utilisé ?
    Oui sauf pour les classes templates, le fait que l'exemple suivnt compile le démontre bien.

    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
    20
    21
    22
    23
    #include <vector>
     
    using std::vector;
     
    template <typename T>
    struct C
    {
      void func1() {}
      void func2( T & t )
      { 
        t.push_back( 2 );
      }
    };
     
    int main()
    {
      vector<int> vec;
      C<int> c1;
      C<vector<int> > c2;
     
      c1.func1();
      c2.func2( vec );
    }

  6. #6
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Par défaut
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème lors de la compilation d'une classe
    Par gjava dans le forum JavaFX
    Réponses: 1
    Dernier message: 09/10/2012, 01h04
  2. Compilation d'une classe appelant une autre
    Par khaigo dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 11/01/2011, 16h12
  3. Compilation d'une classe java avec cmd appelant une autre classe
    Par y_chafaqi dans le forum Général Java
    Réponses: 10
    Dernier message: 09/12/2009, 20h24
  4. comment connaitre la version de compilation d'une classe ?
    Par Tanebisse dans le forum Général Java
    Réponses: 5
    Dernier message: 23/01/2009, 11h32
  5. [Debutant(e)]Compiler une classe
    Par tscoops dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 27/05/2004, 13h50

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