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

Dev-C++ Discussion :

Problème d'include sous Dev-c++ 4.9.8.0


Sujet :

Dev-C++

  1. #1
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut Problème d'include sous Dev-c++ 4.9.8.0
    Bonjour !!

    J'ai un problème d'include sous dev-c++ 4.9.8.0

    J'ai un fichier de fonction nommer : fonction.h
    et un fichier test1.cpp.

    Dans le fichier test1.cpp
    j'ai inclus : fonction.h
    donc
    et lors de la compilation il me fait :
    1 C:\Documents and Settings\@rgon\Bureau\test fichier\test1.cpp
    In file included from C:/Documents and Settings/@rgon/Bureau/test fichier/test1.cpp
    et je ne sais pas du tout de koi cela vien !!

    Je n'ai pas créé de projet et mes deux fichier sont dans le meme répertoire !

    Si vous avez une idée merci de me la communiquer !!
    @@++

  2. #2
    Membre habitué
    Inscrit en
    Novembre 2002
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 120
    Points : 125
    Points
    125
    Par défaut
    A mon avis gcc (qui fonctionne par ligne de commande) n'aime pas trop les espaces dans le nom ou le chemin d'accès du fichier...

  3. #3
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    Ok
    et je dois faire koi ??
    @@++

  4. #4
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Ce que tu montres ne semble être que le début du message d'erreur.
    Donc en compilant test1.cpp GCC a vu une erreur ... mais pour savoir d'où elle vient, il faudrait en dire plus.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    Ok alors je vous donne tout mes deux fichier comme sa vous pourrez m'aider :

    tout d'abord mon fichier fonction.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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    #include <iostream>
    #include <fstream>
    #include <string>
     
    //Décalration de la constante pour le nom de fichier de commande
    const std::string file_commande_name = "commande_file.txt";
     
    //----------------------------------------------------------------------------
    //Fonction qui permet qu programme d'avoir le nombre de
    //bouton a crée au démarrage
    nb_bouton()
    {
    //ouverture du fichier de commande
    std::fstream fichier(file_commande_name.c_str());
     
    //variable qui va servir à reprendre chaque caractère du fichier texte
    char ch;
     
    //Variable qui acceuillera le nombre de bouton
    int nb_ligne = 0;
     
    while (fichier.eof() != true)
    {
            fichier.get(ch);
            if(ch == '\n')
                    nb_ligne = nb_ligne + 1;
     
    }
     
    fichier.close();
     
    return nb_ligne;
    }
     
     
    std::string nom_commande(int num_ligne)
    {
        std::string commande;
        char ch;
        int nb_ligne = 0;
        int nb_ch_special  = 0;
     
        std:fstream fichier(file_commande_name.c_str());
     
        for (int cpt = 0; cpt <= nb_bouton(); cpt++)
        {
            fichier.get(ch);
            if (ch == "\n")       
                    nb_ligne = nb_ligne + 1;
     
            if (ch == "¦")
            {    
                    nb_ch_special = nb_ch_special + 1;
     
                    if (nb_ch_special > 3)
                             nb_ch_special  = 0;         
            }
     
            if (nb_ligne = num_ligne) && (nb_ch_special == 0)
                    commande = commande + ch;
     
            fichier.close();
     
    return commande;
     
    }

    Ensuite mon fichier test.cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include "fonction.h"
     
     
    int main()
    {
    std::string test1;
     
    test1 = nom_commande(2);
    std::cout<<test1<<std::endl;
     
    system("PAUSE");
     
    }

    les erreurs que j'ai :

    pour le fichier test :

    1 C:\Documents and Settings\@rgon\Mes documents\test\test1.cpp
    In file included from C:/Documents and Settings/@rgon/Mes documents/test/test1.cpp

    6 C:\Documents and Settings\@rgon\Mes documents\test\test1.cpp
    parse error

    9 C:\Documents and Settings\@rgon\Mes documents\test\test1.cpp
    `test1'
    Pour le fichier fonction.h :
    12 C:\Documents and Settings\@rgon\Mes documents\test\fonction.h
    ISO C++

    C:\Documents and Settings\@rgon\Mes documents\test\fonction.h
    [Warning] In function:

    43 C:\Documents and Settings\@rgon\Mes documents\test\fonction.h
    use of

    43 C:\Documents and Settings\@rgon\Mes documents\test\fonction.h
    parse error

    48 C:\Documents and Settings\@rgon\Mes documents\test\fonction.h
    ISO C++

    51 C:\Documents and Settings\@rgon\Mes documents\test\fonction.h
    ISO C++

    59 C:\Documents and Settings\@rgon\Mes documents\test\fonction.h
    parse error

    6 C:\Documents and Settings\@rgon\Mes documents\test\test1.cpp
    parse error

    9 C:\Documents and Settings\@rgon\Mes documents\test\test1.cpp
    `test1'
    Voila j'ai tout mit si ce n'est que les deux fichiers fonction.h et test.cpp sont dans le même répertoire .

    Soyez indulgent pour mes erreurs car je n'ai jamais programmer de .h

    Merci d'avance !!!
    @@++

  6. #6
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Quelques problemes en vrac :

    * il manque la valeur de retour de la fonction nb_bouton
    * pas de valeur de retour dans la fonction main
    * il n'existe pas de constructeur de fstream ne prenant qu'un argument de type char*. Dans ton cas du devrais, je pense, rajouter ios::in comme second parametre
    * dans la fonction nom_commande, il manque un : a la ligne std:fstream fichier(
    * dans la fonction nom_commande, lorsque tu compares ch a | ou \n, il faut encadrer ces caracteres par des ' et non des "
    * dans nom_commande, il manque une paire de parenthese dans le dernier if, qui devient alors if( (nb_ligne = num_ligne) && (nb_ch_special == 0)), de plus si tu veux comparer nb_ligne avec num_ligne, il faut utiliser == a la place de =
    * il manque le } du for
    * tu ne teste pas si l'ouverture du fichier a reussi ou non
    * il est preferable de ne mettre que la definition des fonctions dans les .h, pas leur implementation

  7. #7
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    ah trop fort !! sa fonctionne

    en fait l'erreur :

    1 C:\Documents and Settings\@rgon\Bureau\test fichier\test1.cpp
    In file included from C:/Documents and Settings/@rgon/Bureau/test fichier/test1.cpp
    Venait des toute les erreurs contenue dans fontion.h,

    J'aurai cependant encore deux petites questions :

    * dans la fonction nom_commande, lorsque tu compares ch a | ou \n, il faut encadrer ces caracteres par des ' et non des "
    C'est quoi la différence entre " et '


    * il est preferable de ne mettre que la definition des fonctions dans les .h, pas leur implementation
    Pourrait tu m'expliquer la différence entre implémentation et définitions et pourquoi est-il mieux de seulement définir les fonctions de le .h


    Merci pour cette aide c'est vriament simpa de m'avoir dit toute les erreurs (je n'en demandais pas autant)
    @@++

  8. #8
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par Seboubou86
    * dans la fonction nom_commande, lorsque tu compares ch a | ou \n, il faut encadrer ces caracteres par des ' et non des "
    C'est quoi la différence entre " et '
    ' s'utilise pour un caractere seul et " pour une chaine de caractere. En gros "|" est un char* sur une zone contenant le caractere | et un \0


    Citation Envoyé par Seboubou86
    * il est preferable de ne mettre que la definition des fonctions dans les .h, pas leur implementation
    Pourrait tu m'expliquer la différence entre implémentation et définitions et pourquoi est-il mieux de seulement définir les fonctions de le .h
    L'implementation d'une fonction est le code de cette fonction, ce que j'appellais la definition (j'ai d'un coup un doute sur le terme) est simplement le prototype de la fonction, qui est utile lors de la phase de compilation.
    En fait il est preferable de ne mettre que les prototype dans un .h et la fonction en elle meme dans un .cpp car :
    * c'est plus classique
    * si tu as un projet avec plusieurs .cpp qui inclus le .h contenant la fonction du vas avoir un probleme de multiple implemantion du code

  9. #9
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    ok je comprend !!

    Merci bien pour toute ces infos, c est monstre cool !!!!

    je vais pouvoir continuer mon code now !!
    @@++

  10. #10
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Citation Envoyé par gl
    En fait il est preferable de ne mettre que les prototype dans un .h et la fonction en elle meme dans un .cpp car :
    * c'est plus classique
    * si tu as un projet avec plusieurs .cpp qui inclus le .h contenant la fonction du vas avoir un probleme de multiple implémention du code
    Le problème de multiple implémentation se résout en rajoutant le mot clé inline. Cependant, si la fonction fait plus de ... disons 5 lignes, il est très probable que le résultat final ne sera pas inliné ; en plus de devoir recompiler ces fonctions pour chaque fichier .cpp compilé, ce qui n'est pas très efficace -- en l'absence d'headers précompilés.
    Sinon, des fonctions, telles que celles présentées ici, n'ont rien à faire dans un fichier d'entête.

    Autrement, un truc me fait tiquer dans le premier post, et je préfère à tout hasard rapeller un point sur la modularité en C et C++. Un fichier d'entêtes ne se compile pas ! Seul les .cpp sont compilés et ensuite on les lie ensemble.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  11. #11
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    Autrement, un truc me fait tiquer dans le premier post, et je préfère à tout hasard rapeller un point sur la modularité en C et C++. Un fichier d'entêtes ne se compile pas ! Seul les .cpp sont compilés et ensuite on les lie ensemble.
    Désolé mais je suis débutant et je connais pas des masses alors je dit surement des bêise

    en quoi le mot clé inline résout-il le problème de multiple impémentation ?

    N'augmente t'il pas seulement la vitesse de compilation ?
    @@++

  12. #12
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par Seboubou86
    en quoi le mot clé inline résout-il le problème de multiple impémentation ?

    N'augmente t'il pas seulement la vitesse de compilation ?
    En gros (que les puristes me pardonnent), le mot cle inline permet de signaler qu compilateur qu'il serait preferable d'inclure le code de la fonction a l'endroit des appels plutot que de reelement faire a la fonction, ce qui permet generalement de gagner du temps a l'execution. Ainsi il n'y a plus de probleme de declaration multiple de fonction vu qu'il n'y a plus de fonction.

    Par contre comme le souligne Luc Hermitte, si cette fonction est modifie, il faut recompiler tout les fichiers l'appelant. De plus le mot inline est une indication faite au compilateur qui n'en tiendra pas forcement compte (dans le cas de fonction de la taille de la tienne, il y a meme quasiement aucune chance qu'il en tienne compte).

  13. #13
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    Ok donc si j'ai bien compris, si j'ai une fonction que j'utilise beaucoup de fois et que je la déclare inline, l'executable sera plus gros que si je ne la déclarait pas inline ??
    @@++

  14. #14
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Citation Envoyé par Seboubou86
    Ok donc si j'ai bien compris, si j'ai une fonction que j'utilise beaucoup de fois et que je la déclare inline, l'executable sera plus gros que si je ne la déclarait pas inline ??
    Non. Si la fonction est petite il y a des chances que le compilateur respecte tes désirs et l'inline bien. Autrement, cela sera une fonction comme une autre.
    J'ai vu passer une discussion sur inline & cie dans un numéro du C/C++ Users Journal (aka cuj ... point com), écrit par Herb Sutter je crois bien...gagné!
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  15. #15
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    Non. Si la fonction est petite il y a des chances que le compilateur respecte tes désirs et l'inline bien. Autrement, cela sera une fonction comme une autre.
    Mais si il inline comme il se doit elle sera plus grosse ou pas ??
    mon résonnement et que si elle est inlinée et appelée plusieurs fois alros la fonction est codée plusieurs fois !

    si elle ne l'es pas alros elle n'est codée qu'une seul fois bien qu'appelée plusieurs fois !!

    tu vois c eque je veux dire ??

    J'ai vu passer une discussion sur inline & cie dans un numéro du C/C++ Users Journal (aka cuj ... point com), écrit par Herb Sutter je crois bien...gagné!
    et pour cela merci c'est simpa je vais esasyer de comprendre cela mais mes talents en anglais sont super limiter...

    en tout cas merci de ton aide
    @@++

  16. #16
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Citation Envoyé par Seboubou86
    Non. Si la fonction est petite il y a des chances que le compilateur respecte tes désirs et l'inline bien. Autrement, cela sera une fonction comme une autre.
    Mais si il inline comme il se doit elle sera plus grosse ou pas ??
    mon résonnement et que si elle est inlinée et appelée plusieurs fois alros la fonction est codée plusieurs fois !
    Il n'y a pas de règle absolue. Inliner "++i;" prendra moins de place dans l'exécutable final que si il y avait eu un appel de fonction pour faire cela. Inliner un code de 5 lignes, si il est utilisé depuis 10 endroits différents, alors oui l'exécutable sera un peu plus gros. Et alors ?

    D'un point de vue pragmatique, on inline pour avoir un code plus rapide, pas moins gros.

    D'ailleurs, il n'est pas rare que des optimisations (orientée vitesse)conduisent à des exécutables un peu plus volumineux (cf le déroulage de boucles et quelques autres techniques similaires).
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  17. #17
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    Ok !!

    je posais la question pour voir si j'avais bien comrpis ce qu'il me semble être le cas !!

    Ben merci bien pour toute ces informations !!

    c'est simpa de m'avoir expliquer !!!

    Merci Beaucoup !!
    @@++

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

Discussions similaires

  1. Problème d'include sous Ubuntu
    Par nixmind dans le forum Débuter
    Réponses: 3
    Dernier message: 12/06/2012, 21h39
  2. [PHP 5.3] Problème d'include sous Linux
    Par sibelmoch dans le forum Langage
    Réponses: 7
    Dernier message: 21/03/2011, 11h58
  3. problème de compilation sous dev cpp
    Par small45 dans le forum C
    Réponses: 3
    Dernier message: 04/05/2009, 09h17
  4. Probléme d'include sous kdevelop
    Par davlefou dans le forum Ogre
    Réponses: 7
    Dernier message: 15/01/2008, 23h20
  5. [Qt]Problème d'include sous vc2005 express
    Par Cheps dans le forum VC++ .NET
    Réponses: 6
    Dernier message: 05/10/2006, 09h38

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