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 :

appel d'une bibliothèque


Sujet :

C

  1. #1
    Membre confirmé Avatar de batoule80
    Inscrit en
    Février 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 116
    Par défaut appel d'une bibliothèque
    bonjour,

    j'ai écris un programme qui résout une équation du second degrés : equation.c

    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
     
    #include<stdio.h>
    #include<math.h>
    #include"constante.h"
     
    main()   {
     
    int  a,b,c ; float delta, x1 ,x2 ; 
     
     
     
    delta = pow(b,2)-4*a*c ;
     
    if  (delta<0) printf (" pas de solution de l'équation dans l'ensemble des réels\n");
     
    else  
     
         if (delta==0)
     
           { x1= -b/2*a ;
             printf (" solution unique égale à : %f\n", x1) ; }
     
         else 
           {  x1= (-b-pow(delta,1/2))/2*a;
     
              x2= (-b+pow(delta,1/2))/2*a;
              printf ("solution double égale à : %f\n   %f\n ", x1 , x2) ; }
     
    }


    les coéfficients sont déclarés sous forme de constante dans une bibliothèque constante.h dont le code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #define a 9
    #define b 2
    #define c 4
    lors de la compilation : j'ai compilé d'abord constante.h , ensuite equation.c
    le résultat est : equation.c:3:22: erreur: constante.h : Aucun fichier ou dossier de ce type

    pourtant en compilant constante.h aucune erreur n'est affichée !!!

    une idée de la source du problème? , merci de partager

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 452
    Par défaut
    Bonjour,

    Citation Envoyé par batoule80 Voir le message
    lors de la compilation : j'ai compilé d'abord constante.h , ensuite equation.c
    le résultat est : equation.c:3:22: erreur: constante.h : Aucun fichier ou dossier de ce type
    Le message d'erreur est clair : lors de la compilation, tu inclus « constante.h », mais le compilateur ne trouve pas ce fichier. Vérifie qu'il est dans le bon répertoire.

    Ensuite :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #define a 9
    #define b 2
    #define c 4
     
    main()   {
     
    int  a,b,c ; float delta, x1 ,x2 ;

    Tes macros portent le même nom que tes variables ! Ce n'est pas de cette manière que l'on affecte une valeur. Soit tu utilises uniquement tes macros dans tes équations et, dans ce cas, tu retires « int a,b,c », soit tu utilises des variables et là, tu les initialises à la bonne valeur avec :


    et tu retires complètement tes #defines et ton fichier « constante.h ».

  3. #3
    Membre confirmé Avatar de batoule80
    Inscrit en
    Février 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 116
    Par défaut
    merci Obsidian pour ta réponse ,

    en fait au début je saisisais les valeurs des coefficients grace à scanf mais maintenant il est demandé de récupérer ces valeurs depuis cette bibliothèque constante.h et cette dernière se trouve dans le meme répertoire que equation.c

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 452
    Par défaut
    Citation Envoyé par batoule80 Voir le message
    en fait au début je saisisais les valeurs des coefficients grace à scanf mais maintenant il est demandé de récupérer ces valeurs depuis cette bibliothèque constante.h
    Dans ce cas, étant donné que les valeurs de a, b et c restent toujours inchangées, tu peux te passer des variables. Cela reste pas très propre, cependant. L'usage veut que les nom de macros soient écrits en majuscules. C'est mieux si tu utilises A, B et C. Cela ne changera rien au niveau de la compilation, mais ça sera plus facile à repérer pour un programmeur.

    Pour être tout-à-fait exact, « constante.h » n'est pas à proprement parler une bibliothèque. Mais ce n'est pas bien grave pour le moment.

    et cette dernière se trouve dans le meme répertoire que equation.c
    Si les deux fichiers se trouvent dans le même répertoire, peut-être est-ce l'endroit d'où tu lances la compilation qui n'est pas le bon.

    Quel compilateur utilises-tu ? Quel système d'exploitation ? Es-tu sûr(e) que « constante.h » est bien orthographié, à la fois dans ton code et dans le nom du fichier ?

  5. #5
    Membre confirmé Avatar de batoule80
    Inscrit en
    Février 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 116
    Par défaut
    Pour être tout-à-fait exact, « constante.h » n'est pas à proprement parler une bibliothèque. Mais ce n'est pas bien grave pour le moment.
    je suis novice, et je commence à faire mes premiers pas en C , et il s'agit de mon premier programme

    Si les deux fichiers se trouvent dans le même répertoire, peut-être est-ce l'endroit d'où tu lances la compilation qui n'est pas le bon.
    je dois le mettre où ce repertoire ?

    Quel compilateur utilises-tu ? Quel système d'exploitation ?
    en fait j'ai utilisé deux systèmes différents : mandriva et ubuntu , le compilateur aucune idée mais pour compiler j'ai utilisé la commande GCC

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Es-tu sûr(e) que « constante.h » est bien orthographié, à la fois dans ton code et dans le nom du fichier ?
    constante.h est bien orthographié .

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 452
    Par défaut
    en fait j'ai utilisé deux systèmes différents : mandriva et ubuntu , le compilateur aucune idée mais pour compiler j'ai utilisé la commande GCC
    Ok, donc tu travailles sous Linux.

    Par contre, j'avais mal lu ceci :

    lors de la compilation : j'ai compilé d'abord constante.h , ensuite equation.c
    le résultat est : equation.c:3:22: erreur: constante.h : Aucun fichier ou dossier de ce type. pourtant en compilant constante.h aucune erreur n'est affichée !!!
    Il ne faut pas compiler « constante.h » ! C'est un fichier qui est inclus par « equation.c ». Quelles sont les commandes exactes que tu as saisies pour compiler ces deux fichiers ?

  7. #7
    Membre confirmé Avatar de batoule80
    Inscrit en
    Février 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 116
    Par défaut
    bonjour,

    Quelles sont les commandes exactes que tu as saisies pour compiler ces deux fichiers ?
    gcc -o constante constante.h

    gcc -o equation equation.c

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 452
    Par défaut
    C'est vraiment très étrange car le problème ne devrait pas se produire, si tu compiles les deux fichiers au même endroit.

    Par contre, il ne faut pas mélanger à la fois les #define et les noms de tes variables, sinon ces derniers vont être remplacés par les valeurs de tes macros, avant la compilation. Ainsi « int a,b,c » va devenir « int 9,2,4 », ce qui n'a aucun sens, syntaxiquement.

    As-tu fait ces modifications ?

  9. #9
    Membre confirmé Avatar de batoule80
    Inscrit en
    Février 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 116
    Par défaut appel d'un fichier d'entete
    Citation Envoyé par Obsidian Voir le message

    Par contre, il ne faut pas mélanger à la fois les #define et les noms de tes variables, sinon ces derniers vont être remplacés par les valeurs de tes macros, avant la compilation. Ainsi « int a,b,c » va devenir « int 9,2,4 », ce qui n'a aucun sens, syntaxiquement.

    As-tu fait ces modifications ?
    c'était ça le problème , j'ai supprimé la ligne int a.b.c et ça marche

    en tout les cas j'ai appris beaucoups de choses avec cet exemple
    j'aurai dù mettre comme intitulé : appel d'un fichier d'entete
    merci Obsidian pour ton aide

  10. #10
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 452
    Par défaut
    Citation Envoyé par batoule80 Voir le message
    merci Obsidian pour ton aide
    À ton service (mais ça ne m'explique toujours pas pourquoi tu avais le message « Aucun fichier » …).

  11. #11
    Membre confirmé Avatar de batoule80
    Inscrit en
    Février 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 116
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    À ton service (mais ça ne m'explique toujours pas pourquoi tu avais le message « Aucun fichier » …).
    j'ai refait la meme démarche :j'ai compilé d'abord constante.h , ensuite equation.c
    et plus de message d'erreur

  12. #12
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 452
    Par défaut
    Citation Envoyé par batoule80 Voir le message
    j'ai refait la meme démarche :j'ai compilé d'abord constante.h , ensuite equation.c
    et plus de message d'erreur
    J'en suis ravi mais c'est le message « Aucun fichier … » en particulier qui me pose problème, pas le fait que tu aies rencontré un message d'erreur.

    D'autre part, et encore une fois, il ne faut pas compiler « constante.h ». Cela ne sert à rien. L'exécutable ou le fichier-objet qui sera produit ne sera jamais utilisé. Le contenu de « constante.h » est directement inclus par « equation.c » lors de ton #include.

    Rappelle-toi que les fichiers *.h ne sont pas des bibliothèques en eux-mêmes, mais servent à contenir les spécifications d'objets tiers, qui sont compilés en parallèle ou à d'autres moments. Cela permet à ton compilateur de construire un programme qui, ensuite, sera lié en temps voulu à ces bibliothèques. Mais ce ne sont pas les fichiers de spéc eux-mêmes que l'on compile.

    Abandonne complètement l'étape « gcc -o constante constante.h ».

  13. #13
    Membre confirmé Avatar de batoule80
    Inscrit en
    Février 2007
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 116
    Par défaut
    merci encore obsidian pour ces éclaircissements , je prend note.

    cordialement,

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

Discussions similaires

  1. [WD17] Comment appeler afficher une image de la bibliothèque ?
    Par EriCstoFF dans le forum WinDev
    Réponses: 3
    Dernier message: 17/07/2013, 08h02
  2. [OpenPGP] Appeler une bibliothèque
    Par silma dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/02/2013, 17h02
  3. appeler une bibliothèque Java (JNI?)
    Par pythéas dans le forum C++
    Réponses: 3
    Dernier message: 14/12/2011, 23h17
  4. [DOM] Utilisation d'une bibliothèque de tri avec appel AJAX
    Par GreatDeveloperOnizuka dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/02/2008, 11h09
  5. Réponses: 3
    Dernier message: 20/06/2006, 07h06

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